Python第五天 文件訪問 for循環訪問文件 while循環訪問文件 字符串的startswith函數和split函數
目錄
Python第二天 變量 運算符與表達式 input()與raw_input()區別 字符編碼 python轉義符 字符串格式化
Python第三天 序列 5種數據類型 數值 字符串 列表 元組 字典
Python第四天 流程控制 if else條件判斷 for循環 while循環
Python第五天 文件訪問 for循環訪問文件 while循環訪問文件 字符串的startswith函數和split函數
Python第七天 函數 函數參數 函數變量 函數返回值 多類型傳值 冗余參數 函數遞歸調用 匿名函數 內置函數 列表表達式/列表重寫
Python第八天 模塊 包 全局變量和內置變量__name__ Python path
Python第九天 面向對象 類定義 類的屬性 類的方法 內部類 垃圾回收機制 類的繼承 裝飾器
Python第十天 print >> f,和fd.write()的區別 stdout的buffer 標準輸入 標準輸出 標準錯誤 重定向 輸出流和輸入流
Python第十二天 收集主機信息 正則表達式 無名分組 有名分組
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
文章列表