Python文件和目錄操作
本章內容
- open
- 內置函數
- with語句
一、open
open函數是我們在文件操作中經常用到的一個python內置函數
1 f = open(‘file.txt‘,encoding="utf-8")
2 data = f.read()
3 print(data)
4 f.close()
PS:最後一定要調用close()來把打開的文件關閉
我們通過源碼來看看有哪些參數
open(file, mode=‘r‘, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
上述引用中,我們只需要註意file、mode、encoding就可以了,因為這三個是我們常用的也是必用的,對於其他的參數我並不了解,因為一般沒用過。
file:文件名;mode:打開文件的模式;encoding:編碼方式
打開文件的模式有:
r,只讀模式(PS:只可寫讀不可寫)
w,只寫模式(PS:只可寫不可讀,該模式如果文件存在就清空裏面所有內容,如果不存在就會自動創建)
a,追加模式(PS:只可寫,並且寫只能追加到最後,文件如果不存在參考 ‘ w ‘ 模式)
+,可同時讀寫
r+,可讀寫文件(PS:可讀,可寫,可追加,如果文件不存在就報錯)
w+,可讀寫文件(PS:相當於為 w 模式加上了讀的功能,)
a+,同 a
b,表示以二進制的模式進行處理(PS:Linux可忽略,Windows處理二進制文件時需標註)
rb,同r(PS:因為是以二進制的方式,所以encoding參數就不能用了,用了會報錯)
wb,同w(PS:Windows下寫的時候需要標註,第一種就是直接在字符串前加b,第二種就是用bytes將數據轉換成bytes類型。)
ab,同a(PS:需要標註)
U,表示在讀取時,可以將\r \n \r\n 自動轉換成 \n (與r或r+模式同時使用)
在python3.x中這個方法已經廢棄了,所以不說了。
二、open中的內置函數
1 #with open(‘file.txt‘,‘r+‘,encoding="utf-8") as f:
2
3 f.close() #關閉文件
4
5 f.fileno() #返回一個文件描述符
6
7 f.isatty() #如果文件連接(與終端設備相關聯)到tty(類似)設備,就返回True,否則False
8
9 f.read() #用於讀取文件內容,但是此方法不一定能完全讀出來。官方文檔如下:
10 """
11 Only makes one system call, so less data may be returned than requested.
12 In non-blocking mode, returns None if no data is available.
13 Return an empty bytes object at EOF.
14 """
15
16 #大致意思就是說該方法只進行一個系統調用,因此可以返回的數據比請求的要少。在非阻塞模式下,如果沒有可用的數據,則返回None,即一個空字節對象。
17
18 f.readable() #可以判斷當前文件打開模式是否可讀,是返回True,否則else
19
20 f.seek() #用來移動文件指針
21
22 f.seekable() #指針是否可操作
23
24 f.tell() #獲取指針位置
25
26 f.truncate() #截取數據,僅保留指定之前數據
27
28 f.writable() #是否可寫
29
30 f.write() #寫
PS:在進行操作時註意文件句柄的位置
三、with語句
為了避免打開文件後忘記關閉,可以通過管理上下文,即:
with open(‘file.txt‘,‘r+‘) as f:
pass
當with代碼塊執行完畢時,內部會自動關閉釋放文件資源。
在2.7以上的版本,支持同時對多個文件上下文進行管理,即:
with open(‘file1.txt‘,‘r+‘) as f1,open(‘file2.txt‘,‘r+‘) as f2:
pass
寫這篇博客中有遇到一些問題,我會將這些問題寫進這篇博客中:python所遇問題合集
Python文件和目錄操作