f = open('chenli.txt') #打開文件 first_line = f.readline() print('first line:',first_line) #讀一行print('我是分隔線'.center(50,'-')) data = f.read()# 讀取剩下的全部內容,文件大時不要用print(data) #打印讀取內容 f.close() #關閉文件
f=open('chenli.txt',encoding='utf-8') f.read()
#不指定打開編碼,默認使用操做系統的編碼,windows爲gbk,linux爲utf-8,與解釋器編碼無關
f=open('chenli.txt',encoding='gbk') #在windows中默認使用的也是gbk編碼,此時不指定編碼也行
f.read()
1 文件句柄 = open('文件路徑', '模式')
打開文件時,須要指定文件路徑和以何等方式打開文件,打開後,便可獲取該文件句柄,往後經過此文件句柄對該文件操做。python
打開文件的模式有:linux
"+" 表示能夠同時讀寫某個文件windows
"b"表示以字節的方式操做app
注:以b方式打開時,讀取到的內容是字節類型,寫入時也須要提供字節類型,不能指定編碼函數
flush原理:編碼
滾動條:操作系統
import sys,time for i in range(10): sys.stdout.write('#') sys.stdout.flush() time.sleep(0.2)
注意:read(3)表明讀取3個字符,其他的文件內光標移動都是以字節爲單位如seek,tell,read,truncatecode
整理中blog
1. open()語法
open(file[, mode[, buffering[, encoding[, errors[, newline[, closefd=True]]]]]])
open函數有不少的參數,經常使用的是file,mode和encoding
file文件位置,須要加引號
mode文件打開模式,見下面3
buffering的可取值有0,1,>1三個,0表明buffer關閉(只適用於二進制模式),1表明line buffer(只適用於文本模式),>1表示初始化的buffer大小;
encoding表示的是返回的數據採用何種編碼,通常採用utf8或者gbk;
errors的取值通常有strict,ignore,當取strict的時候,字符編碼出現問題的時候,會報錯,當取ignore的時候,編碼出現問題,程序會忽略而過,繼續執行下面的程序。
newline能夠取的值有None, \n, \r, 」, ‘\r\n',用於區分換行符,可是這個參數只對文本模式有效;
closefd的取值,是與傳入的文件參數有關,默認狀況下爲True,傳入的file參數爲文件的文件名,取值爲False的時候,file只能是文件描述符,什麼是文件描述符,就是一個非負整數,在Unix內核的系統中,打開一個文件,便會返回一個文件描述符。內存
2. Python中file()與open()區別
二者都可以打開文件,對文件進行操做,也具備類似的用法和參數,可是,這兩種文件打開方式有本質的區別,file爲文件類,用file()來打開文件,至關於這是在構造文件類,而用open()打開文件,是用python的內建函數來操做,建議使用open
3. 參數mode的基本取值
Character | Meaning |
‘r' | open for reading (default) |
‘w' | open for writing, truncating the file first |
‘a' | open for writing, appending to the end of the file if it exists |
‘b' | binary mode |
‘t' | text mode (default) |
‘+' | open a disk file for updating (reading and writing) |
‘U' | universal newline mode (for backwards compatibility; should not be used in new code) |
r、w、a爲打開文件的基本模式,對應着只讀、只寫、追加模式;
b、t、+、U這四個字符,與以上的文件打開模式組合使用,二進制模式,文本模式,讀寫模式、通用換行符,根據實際狀況組合使用、
常見的mode取值組合
1 r或rt 默認模式,文本模式讀 2 rb 二進制文件 3 4 w或wt 文本模式寫,打開前文件存儲被清空 5 wb 二進制寫,文件存儲一樣被清空 6 7 a 追加模式,只能寫在文件末尾 8 a+ 可讀寫模式,寫只能寫在文件末尾 9 10 w+ 可讀寫,與a+的區別是要清空文件內容 11 r+ 可讀寫,與a+的區別是能夠寫到文件任何位置
with open('a.txt','w') as f: pass
with open('a.txt','r') as read_f,open('b.txt','w') as write_f: data=read_f.read() write_f.write(data)