文章出處

Python第五天   文件訪問    for循環訪問文件    while循環訪問文件   字符串的startswith函數和split函數

 

目錄

Pycharm使用技巧(轉載)

Python第一天  安裝  shell  文件

Python第二天  變量  運算符與表達式  input()與raw_input()區別  字符編碼  python轉義符  字符串格式化

Python第三天 序列  5種數據類型  數值  字符串  列表  元組  字典

Python第四天   流程控制   if else條件判斷   for循環 while循環

Python第五天   文件訪問    for循環訪問文件    while循環訪問文件   字符串的startswith函數和split函數

Python第六天   類型轉換

Python第七天   函數  函數參數   函數變量   函數返回值  多類型傳值    冗余參數   函數遞歸調用   匿名函數   內置函數   列表表達式/列表重寫

Python第八天  模塊   包   全局變量和內置變量__name__    Python path

Python第九天  面向對象  類定義   類的屬性    類的方法    內部類   垃圾回收機制   類的繼承 裝飾器

Python第十天   print >> f,和fd.write()的區別    stdout的buffer  標準輸入 標準輸出  標準錯誤   重定向 輸出流和輸入流

Python第十一天    異常處理  glob模塊和shlex模塊    打開外部程序和subprocess模塊  subprocess類  Pipe管道  operator模塊   sorted函數   生成器  walk模塊   hashlib模塊

Python第十二天     收集主機信息     正則表達式  無名分組   有名分組

Python第十三天   django 1.6   導入模板   定義數據模型   訪問數據庫   GET和POST方法    SimpleCMDB項目   urllib模塊   urllib2模塊  httplib模塊  django和web服務器整合  wsgi模塊   gunicorn模塊

Python第十四天 序列化  pickle模塊  cPickle模塊  JSON模塊  API的兩種格式

Python第十五天  datetime模塊 time模塊   thread模塊  threading模塊  Queue隊列模塊  multiprocessing模塊  paramiko模塊  fabric模塊  

 

 

注意:python里windows的路徑要寫成 /

f = open('F:/a.txt', 'a')  #以寫的方式打開

 

 

 

Python文件訪問

 

open
訪問模式    說明
r    以只讀方式打開文件。文件的指針將會放在文件的開頭。這是默認模式。
w    打開一個文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
a    打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是說,新的內容將會被寫入到已有內容之后。如果該文件不存在,創建新文件進行寫入。
rb    以二進制格式打開一個文件用于只讀。文件指針將會放在文件的開頭。這是默認模式。
wb    以二進制格式打開一個文件只用于寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
ab    以二進制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結尾。也就是新的內容將會被寫入到已有內容之后。如果該文件不存在,創建新文件進行寫入。
r+    打開一個文件用于讀寫。文件指針將會放在文件的開頭。
w+    打開一個文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
a+    打開一個文件用于讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用于讀寫。
rb+    以二進制格式打開一個文件用于讀寫。文件指針將會放在文件的開頭。
wb+    以二進制格式打開一個文件用于讀寫。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
ab+    以二進制格式打開一個文件用于追加。如果該文件已存在,文件指針將會放在文件的結尾。如果該文件不存在,創建新文件用于讀寫。
with open :python2.6才有的方法,python2.5沒有,用with open,退出with open代碼塊之后的代碼不需要顯式fd.close()

若不存在會創建新文件的打開方式:a,a+,w,w+
r+:可讀可寫,若文件不存在,報錯,r+進行覆蓋寫

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#__author__="huazai"
"""
pycharm 使用指南
Date:2016.08.12
"""

with open('/proc/meminfo') as fd:
    for line in fd:
        if line.startswith('MemTotal'):
            total = line.split()[1]
            continue
        if line.startswith('MemFree'):
            free = line.split()[1]
            break

print "free:%.2f" % (int(free) / 1024.0) + 'M'
print "total:%.2f" % (int(total) / 1024.0) + 'M'

 

 


文件的方法
fd.close():不執行fd.close(),python程序退出的時候也會close文件
fd.read()
fd.readline()
fd.readlines() :返回一個列表,每個元素都會加上一個換行符\n
next():一行一行讀取
fd.write()

 

 

for循環訪問文件
第一種 readlines全部把文件內容讀到內存

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#__author__="huazai"
"""
pycharm 使用指南
Date:2016.08.12
"""

with open('C:\Users\Administrator\Desktop\mRemoteNG\mRemoteNG-Portable-1.69\CREDITS.TXT') as fd:
    for line in fd.readlines():
        print line,

 

---------------------------------------------------------------
第二種 一行一行的讀到內存 比較節省內存

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#__author__="huazai"
"""
pycharm 使用指南
Date:2016.08.12
"""

with open('C:\Users\Administrator\Desktop\mRemoteNG\mRemoteNG-Portable-1.69\CREDITS.TXT') as fd:
    for line in fd:
        print line

        if fd.next().startswith('VncSharp'):
            break

這里的fd是一個對象,有fd.next()方法,是顯示文件下一行,那么for i in fd就相當于一直在執行fd.next()方法,直到文件結束

 



while循環訪問文件

#!/usr/bin/env python
# -*- coding:utf-8 -*-
#__author__="huazai"
"""
pycharm 使用指南
Date:2016.08.12
"""

with open('C:\Users\Administrator\Desktop\mRemoteNG\mRemoteNG-Portable-1.69\CREDITS.TXT') as fd:
    while True:
        line = fd.readline()
        print line,
        if not line:
            break

 

 

字符串的startswith函數和split函數

startswith()函數:匹配字符串中的行,完全匹配,不能模糊匹配
split()函數:切割字符串,默認以空格為分隔符
isdigit()函數:判斷字符串是否是數字

string.digits函數:返回數字0123456789

 

 

 

#!/usr/bin/env python

import os
import sys
import string

def isNum(s):
    for i in s:
        if i in string.digits:
        if i.isdigit():
            continue
        else:
            return False
    return True


if  isNum(sys.argv[1]):
    print sys.argv[1]

 

 

In [5]: a.isdigit()
Out[5]: False

 


文章列表


不含病毒。www.avast.com
arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()