open(path, mode, encoding='xxx', errors='ignore')json
mode取值:
rU 或 Ua 以讀方式打開, 同時提供通用換行符支持 (PEP 278)
w 以寫方式打開,
a 以追加模式打開 (從 EOF 開始, 必要時建立新文件)
r+ 以讀寫模式打開,先讀後寫(注意須要將文件指針重置爲0,f.seek(0), 不然將變成追加內容)
w+ 以讀寫模式打開 (參見 w ), 先寫後讀
a+ 以讀寫模式打開 (參見 a )
rb 以二進制讀模式打開
wb 以二進制寫模式打開 (參見 w )
ab 以二進制追加模式打開 (參見 a )
rb+ 以二進制讀寫模式打開 (參見 r+ )
wb+ 以二進制讀寫模式打開 (參見 w+ )
ab+ 以二進制讀寫模式打開 (參見 a+ )編碼
示例代碼:spa
f = open('a.txt', 'r') content = f.read() f.close() print(content)
示例代碼2:指針
f = open('a.txt', 'r') content = '' for line in f.readlines(): content += line.strip() #過濾尾部換行符 f.close() print(content)
示例代碼3:code
f = open('a.txt', 'r') content = '' for line in f.readlines(): content += line.strip() #過濾尾部換行符 f.close() print(content)
content = '' try: f = open('a.txt', 'r') for line in f.readlines(): content += line.strip() #過濾尾部換行符 except BaseException: pass finally: f.close() print(content)
示例代碼對象
content = '' with open('a.txt', 'r') as f: for line in f.readlines(): content += line.strip() #過濾尾部換行符 print(content)
示例代碼:blog
with open('a.txt', 'a') as f: f.writelines(['Hello, world!\n','Hello, world!\n'])
藉助StrongIO和文件讀寫大體相同,調用close時,內存釋放ip
示例:內存
from io import StringIO f = StringIO() f.write('hello') f.write('word') print(f.getvalue()) f.close()
藉助BytesIO和文件讀寫大體相同,調用close時,內存釋放utf-8
from io import BytesIO f = BytesIO() f.write('你'.encode('utf-8')) #寫入通過UTF-8編碼的bytes f.write('好'.encode('utf-8')) #寫入通過UTF-8編碼的bytes print(f.getvalue()) f.close()
>>> import os >>> os.name 'nt'
posix,說明系統是Linux、Unix或Mac OS X,若是是nt,就是Windows系統。
>>> os.environ >>> os.environ.get('PATH') #獲取其中一項
os.path模塊中的方法
>>> os.path.abspath('.') #當前目錄絕對路徑 >>> os.path.join(os.path.abspath('.'), 'test') #合併路徑 >>> os.mkdir('ror') #建立目錄 >>> os.rmdir('ror') #刪除目錄 >>> os.rename('test.txt', 'test.py') #文件重命名 >>> os.remove('test.py') #刪除文件
#拆分路徑 >>> os.path.split('/usr/ror/a.txt') ('/usr/ror', 'a.txt') #拆分擴展名 >>> os.path.splitext('/usr/ror/a.txt') ('/usr/ror/a', '.txt')
#列出當前目錄下全部的txt文件 >>> [file for file in os.listdir('.') if os.path.isfile(file) and os.path.splitext(file)[1] == '.txt'] #拷貝文件(拷貝當前目錄下a.txt到b.txt) >>> import shutil >>> shutil.copyfile('a.txt', 'b.txt')
示例代碼:
>>> import pickle >>> d=dict(age=10,name='g') >>> pickle.dumps(d) #dumps 方法把任意對象序列化成一個bytes >>> f=open('a.txt', 'wb') >>> pickle.dump(d, f) #dump()直接把對象序列化後寫入一個文件對象 >>> f.close()
能夠先把內容讀到一個bytes,而後用pickle.loads()方法反序列化出對象,也能夠直接用pickle.load()方法從一個文件對象中直接反序列化出對象
>>> f=open('a.txt', 'rb') >>> d=pickle.load(f) >>> f.close() >>> d {'age': 10, 'name': 'g'}
>>> import json >>> d=dict(age=10,name='g') >>> json_str = json.dumps(d) #從字典/對象序列化 >>> json_str '{"age": 10, "name": "guobin"}' >>> json.loads(json_str) #從字符串反序列化 {u'age': 10, u'name': u'guobin'}
示例代碼
import json class Foo: def __init__(self, name, age): self.name = name self.age = age # json encode obj f = Foo('g', 15) print(json.dumps(f.__dict__)) #json decode obj def hook(d): return Foo(d['name'], d['age']) f2 = json.loads('{"name": "g", "age": 15}', object_hook= hook) print(f2)
輸出:{"name": "g", "age": 15}<__main__.Foo object at 0x00000213E383A940>