python中的檔案讀寫
阿新 • • 發佈:2019-01-10
雖然研究了很多python程式碼,卻沒有整理過關於檔案操作的,系統地整理下。
一、普通的檔案讀寫
在磁碟上讀寫檔案都是由作業系統控制的,應用讀寫檔案就是請求作業系統開啟一個檔案物件,然後,通過作業系統提供的介面從這個檔案物件中讀取資料(讀檔案),或者把資料寫入這個檔案物件(寫檔案)。
python內建了各種函式,來對檔案進行操作。
1、開啟檔案:open
f = open('data/test.txt', 'r')
2、讀取檔案內容:read()
str=f.read()#返回一個str物件
for line in f.readlines():
print(line.strip()) # 把末尾的'\n'刪掉
因為呼叫read()會一次性讀取檔案的全部內容,如果檔案特別大,會記憶體溢位,所以,可以反覆呼叫read(size)方法,每次最多讀取size個位元組的內容。另外,呼叫readline()可以每次讀取一行內容,呼叫readlines()一次讀取所有內容並按行返回list。根據不同情況決定呼叫哪種方法。
3、讀取二進位制檔案
f = open('img/test.jpg', 'rb')
f.read()
4、字元編碼
要讀取非ASCII編碼的文字檔案,就必須以二進位制模式開啟,再解碼。比如GBK編碼的檔案:
f = open('/Users/michael/gbk.txt' , 'rb')
u = f.read().decode('gbk')
如果每次都這麼手動轉換編碼嫌麻煩(寫程式怕麻煩是好事,不怕麻煩就會寫出又長又難懂又沒法維護的程式碼),Python還提供了一個codecs模組幫我們在讀檔案時自動轉換編碼,直接讀出unicode:
import codecs
with codecs.open('data/gbk.txt', 'r', 'gbk') as f:
f.read()
5、關閉檔案
f.close()
Python引入了with語句來自動幫我們呼叫close()方法,這樣我們就不用手工呼叫close方法了:
with open('data/test.txt' , 'r') as f:
print f.read()
6、寫檔案
with open('data/test.txt', 'w') as f:
f.write('Hello, world!')
注意,當我們寫檔案時,作業系統往往不會立刻把資料寫入磁碟,而是放到記憶體快取起來,空閒的時候再慢慢寫入。只有呼叫close()方法時,作業系統才保證把沒有寫入的資料全部寫入磁碟。所以如果不用with語句的話千萬不要忘記呼叫close()。
二、Python讀取CSV檔案的三種方式
1、普通方法讀取:
with open("fileName.csv",encoding='utf-8') as file:
for line in file:
print line
2、用CSV標準庫讀取:
import csv
csv_reader = csv.reader(open("fileName.csv"))
for row in csv_reader:
print row
3、用pandas讀取:
import pandas as pd
data = pd.read_csv("fileName.csv")
print data
4、DataFrame寫入csv檔案
df.to_csv('Result.csv')