python中打開文件需要使用內置函數open
格式:
open(name[,mode[,buffering]])
啟動mode和buffering 是可選的,默認情況下mode是r
mode:
r:以讀方式打開
w:以寫方式打開 (文件不存在會創建,存在的話,會清空文件,很危險)
a:以追加的方式打開
r+:以讀寫模式打開
w+:以讀寫模式打開
a+:以讀寫模式打開
rb:以二進制讀模式打開(特殊文件需要用文本模式傳輸的話,建議使用b)
wb:以二進制寫模式打開
ab:以二進制追加模式打開
方法:
fd = open('/tmp/test.txt','r')
以讀模式打開,可以利用一個變量去接收,注意這個變量是一個文件對象
fd.close()
關閉打開的文件,(修改等操作,只有關閉了文件,才會生效)
fd.write("123")
寫入(需要寫模式),注意寫入的內容必須是一個字符串。
fd.read(int)
一次性讀取文件所有內容,那么再次執行read()方法的時候,指針在末尾,所以就為空了。如果指定了int,那么就只讀取int個字符
fd.readline()
一行一行讀取,返回字符串,當指針到文件默認,返回空
fd.readlines()
一次讀取所有行,並把每一個行當成一個元素,存儲在序列中(如果文件很大,那么非常占內存)
fd.next()
第一讀取一行,知道行尾,到行尾的時候會報錯
練習:
for 循環遍歷文件:
打印文件的每一行
#!/usr/bin/env python fd = open('/tmp/hello.txt') for line in fd: print line,
注意:這里for line in fd,其實可以從fd.readlines()中讀取,但是如果文件很大,那么就會一次性讀取到內存中,非常占內存,而這里fd存儲的是對象,只有我們讀取一行,它才會把這行讀取到內存中,建議使用這種方法。
while循環遍歷文件:
#!/usr/bin/env python fd = open('/tmp/hello.txt') while True: line = fd.readline() if not line: break print line, fd.close()
擴展:
如果不想每次打開文件都關閉,可以使用with關鍵字,2.6以上版本支持with讀取 with open('/tmp/hello.txt') as fd: 然后所有打開文件的操作都需要縮進,包含在with下才行
with open('/tmp/hello.txt') as fd: while True: line = fd.readline() if not line: break print line,