# Write chunks of text data with open('somefile.txt', 'wt') as f: f.write(text1) # Redirected print statement with open('somefile.txt', 'wt') as f: print(line1, file=f) ''' 文件的讀寫操做默認使用系統編碼,能夠經過調用 sys.getdefaultencoding() 來獲得。 在大多數機器上面都是utf-8編碼 '''
f = open('sample.txt', 'rt', encoding='utf-8')
統一模式處理換行符。 這種模式下,在讀取文本的時候,Python能夠識別全部的普通換行符並將其轉換爲單個 \n
字符。 相似的,在輸出時會將換行符 \n
轉換爲系統默認的換行符。 若是你不但願這種默認的處理方式,能夠給 open()
函數傳入參數 newline=''
,就像下面這樣:函數
# Read with disabled newline translation with open('somefile.txt', 'rt', newline='') as f: ...
with open('d:/work/test.txt', 'wt') as f: print('Hello World!', file=f)
使用在 print()
函數中使用 sep
和 end
關鍵字參數, 改變默認的分隔符或者行尾符測試
>>> print('ACME', 50, 91.5) ACME 50 91.5 >>> print('ACME', 50, 91.5, sep=',') ACME,50,91.5 >>> print('ACME', 50, 91.5, sep=',', end='!!\n') ACME,50,91.5!! >>> #end參數也能夠在輸出中禁止換行。 >>> for i in range(3): ... print(i) ... 0 1 2 >>> for i in range(3): ... print(i, end=' ') ... 0 1 2 >>>
#str.join()也能夠控制分隔符 >>> print(','.join(('ACME','50','91.5'))) ACME,50,91.5 >>>
>>> row = ('ACME', 50, 91.5) >>> print(','.join(row)) Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: sequence item 1: expected str instance, int found >>> print(','.join(str(x) for x in row)) ACME,50,91.5 >>> >>> print(*row, sep=',') ACME,50,91.5 >>>
5.文件不存在才能寫入編碼
6. 字符串IO操做spa
7.讀寫壓縮文件code
8.固定大小記錄的文件迭代對象
9.讀取二進制數據到可變緩衝區中[文件對象的readinto()]blog
和普通 read()
方法不一樣的是, readinto()
填充已存在的緩衝區而不是爲新對象從新分配內存再返回它們。 所以,你能夠使用它來避免大量的內存分配操做圖片
11.文件路徑名的操做[os.path]內存
12.測試文件是否存在utf-8
13.獲取文件夾中的文件列表[os.listdir()]
pyfiles = [name for name in os.listdir('somedir') if name.endswith('.py')]
對於文件名的匹配,你可能會考慮使用 glob
或 fnmatch
模塊。好比:
import glob pyfiles = glob.glob('somedir/*.py') from fnmatch import fnmatch pyfiles = [name for name in os.listdir('somedir') if fnmatch(name, '*.py')]
若是你還想獲取目錄中實體名列表的元信息,好比文件大小,修改時間等等, 你或許還須要使用到 os.path
模塊中的函數或着 os.stat()
函數來收集數據。