Python學習筆記|Python之檔案操作

Tester_hope發表於2018-12-21

Python之檔案操作

1.檔案開啟

a.函式原型:open(filename,mode)

  • filename

檔名,要開啟的檔名

  • mode

r:只讀的方式開啟,如果檔案不存在會提示錯誤,
w:只寫的方式開啟,如果檔案存在則覆蓋,不存在則建立
a:開啟一個檔案進行追加內容,新寫的內容會追加在檔案的尾部,如果存在則開啟,不存在則建立新的檔案

對於以上的三種模式 ,分別有對應的另一種模式

r+:讀寫,會將檔案指標調到檔案的頭部
w+:讀寫,檔案不存在直接建立,存在覆蓋原始檔
a+:追加讀寫,會將檔案的指標調到檔案的末尾

模式可以省了不寫,不寫時預設為只讀模式

  • 總結:
  1. 模式rr+:r+可以向開啟的檔案中write寫入內容,而r不能寫入內容,否則報IOError錯誤(File not open for writing)
  2. 模式ww+:w+可以從開啟的檔案中read讀內容,而w不能從檔案中讀取內容,否則報IOError錯誤(File not open for reading)
  1. 模式aa+:不存在會建立,並檔案指標指向結尾的位置,不能呼叫read讀,否則報IOError,而a可以read讀檔案內容
  2. 建立檔案:模式rr+均不會建立檔案,其他模式均會建立檔案

b.使用with open as files開啟檔案

使用with open方式開啟不需要呼叫close關閉檔案,python會判斷什麼時候需要自動關閉檔案,如下:

	with open('python.txt','r') as files:

另:有關模式,同上

2.檔案的操作

A. 讀檔案

  • read(num)

讀取固定個數的內容

with open('python.txt','r') as files:
    content = files.read(4)
    print (content)
  • read

讀取所有內容

	with open('python.txt','r') as files:
		content = files.read()
		print (content)
  • readline

按行讀取,返回的是一個列表,列表中的每個元素是為每一行的內容

	with open('python.txt','r') as files:
	    content = files.readlines()
	    print (content)

B. 寫檔案

  • write
	with open('python.txt','a') as files:
    contents = '你好,請幫忙再寫入一句話,你好,java'
    files.write(contents)

3.檔案指標

  • tell

獲取檔案指標位置

函式原型:tell()

	with open('python.txt','r') as files:
	    content = files.read()
	    print (content)
	    # tell讀取檔案指標
	    # position = files.tell()
	    # print('檔案的位置為%d'%position)
  • seek

設定檔案指標位置

函式原型:seek(offset,whence)

offset:偏移位元組數,>0表示正向偏移,<0表示負向偏移

whence:whencn代表那個位置開始偏移,具體有:0(從頭開始),1(當前位置開始),2(檔案末尾)

如:

	with open('python.txt','r') as files:
	    #從頭開始偏移,並正向偏移6個位元組
	    files.seek(6,0)
	    contents = files.read(2)
	    print('檔案內容為:%s'%contents)
	    position = files.tell()
	    print('檔案的位置為%d'%position)
	
	    #從尾開始偏移,並反向偏移6個位元組
	    files.seek(-6,2)
	    contents = files.read(4)
	    print('檔案內容為:%s'%contents)

4.檔案關閉

  • close

關閉檔案,如果使用了with open開啟的檔案則不需要呼叫close

	files = open('python.txt','r')
	files.close()

5.tips

逐行讀取 ,結合for迴圈,可以不使用read函式讀取

	with open('python.txt','r') as files:
	
	    i = 1
	    for line in files:
	        #沒有使用read
	        print('這是%d行,內容為%s'%(i,line))
	        i+=1

相關文章