1 打開文件的正確方式
open方法返回的是文件句柄殖妇,該方法有兩個參數(shù):open(filename, mode)彼乌。
with open('workfile', 'r') as f:
read_data = f.read()
打開模式:
模式 | 功能 |
---|---|
'r' | 只讀铐殃,默認參數(shù) |
'w' | 覆蓋寫 |
'a' | 追加寫 |
'r+' | 讀和寫 |
'b' | 追加參數(shù),和讀和寫同時使用佳励,以二進制模式打開文件休里。 |
默認情況下,打開的文件是文本文件赃承,編碼方式根據(jù)平臺決定妙黍。對于非文本文件,可以追加'b'參數(shù)瞧剖。
對于不同的平臺拭嫁,文本文件的換行符是不同的,python把所有的'\n'替換成平臺相應(yīng)的換行符抓于。(Window:'\r\n',Unix:'\n')
讀取JPEG和EXE文件時做粤,慎用’b‘模式。
2 讀文件的3種方法
- read
- readline
- readlines
f.read(size)方法讀取一定長度的數(shù)據(jù)捉撮,返回的是字符串或二進制文件(’rb'模式)怕品。size參數(shù)可選,當(dāng)省略或為負值時巾遭,返回整個文件堵泽。但是文件太大時修己,可能會溢出恢总。
f.read()
f.readline()讀取文件的一行并返回字符串迎罗。以下是讀取文件的每一行并打印的簡便方法。
for line in f:
print(line, end='')
f.readlines方法讀取文件的每一行片仿,返回列表纹安。列表的元素為每一行的字符串。
l1 = f.readlines()
# 等同于f.readlines()
l2 = list(f)
3 寫文件的方法
lines = ['how are you?\n', 'I am fine.\n']
with open(filename, 'w') as f:
for line in lines:
f.write(line)
4 高階:JSON
JSON砂豌,也就是Javascipt Object Notation厢岂。
有時需要保存整形數(shù)據(jù)或其他數(shù)據(jù),而上面介紹的操作只能讀取和保存字符串阳距。這樣讀取數(shù)據(jù)之后還需要對數(shù)據(jù)進行進一步的處理塔粒,而JSON不用。它提供了序列化和反序列的方法筐摘,讓這個數(shù)據(jù)交換過程極為簡便卒茬。
- 序列化:把數(shù)據(jù)保存到文件
import json
json.dump(x, f)
- 反序列化:從磁盤加載數(shù)據(jù)
x = json.load(f)
另外,python有自己的序列化方法——pickle咖熟,它比json更容易處理復(fù)雜的數(shù)據(jù)結(jié)構(gòu)圃酵。但是,它只能用于python馍管。
參考文獻:
Python-tutorial