第9.12節 Python中其他文件操作方式

一、 引言
本章老猿主要介紹了Python 內置io模塊的文件操作相關功能,其實除了內置io模塊可以進行文件操作外,Python的不同模塊還提供了多種文件操作方式,下面簡單將這些模塊和方法介紹一下。

二、 使用上下文管理器打開文件讀寫
上下文管理器老猿還沒學過,暫時也沒想花時間去研究,在這裏大家記住使用方法就可以了。

  1. 語法:
    with open(文件名,讀寫模式) as 文件對象:
    對文件對象進行操作。
  2. 語法釋義
    1)使用with…as語句來開啓上下文管理器;
    2)open就是io模塊的open,語法也是一樣;
    3)文件對象就是open返回的文件對象。
    從以上語法來看,使用上下文管理器實際上與直接使用open差不多,只是將文件對象放到了as後面,同時文件讀取後不需要取關閉,上下文管理器會自動關閉文件

三、 使用fileinput按行讀取文件
fileinput屬於fileinput模塊,因此使用前需要導入該模塊。

  1. 語法:
    fileinput.input(文件名)
  2. 語法釋義:
    打開文件名指定的文件,返回一個fileinput.FileInput的對象,該對象可以使用readline讀取文件內容,同時該對象還是一個可操作文件的迭代對象,直接使用for…in進行迭代讀取文件內容。如:
    for line in fileinput.input(filename):print(line)

四、 將打開的文件使用迭代訪問方式處理
fileinput.input打開的文件可以通過迭代方式訪問,實際上open打開的文件也可以:
1、 使用上下文管理打開文件後迭代讀取,如:
with open(r’c:\temp\test.txt’) as f:
for line in f:print(line)
2、 直接打開文件迭代讀取
for line in open(r’c:\temp\test.txt’)::print(line)
注意:文件訪問後不會關閉

五、 使用os模塊進行文件操作
在前面章節介紹open函數時,我們提及了os模塊的open函數,實際上os模塊有完整的讀寫、定位函數,只是都是底層的操作函數。
1、 os.open(path, flags, mode=0o777, *, dir_fd=None)打開文件,返回一個文件描述符
2、 os.lseek(fd, pos, how)進行文件指針定位;
3、 os.read(fd, n)讀取文件
4、 os.write(fd, str)寫入文件
5、 os.fchown(fd, uid, gid)改變文件的歸屬用戶和歸屬組
6、 os.close(fd)關閉文件
具體每個函數的參數釋義老猿在此不詳細介紹,請大家參考Python官網os模塊的文檔:https://docs.python.org/zh-cn/3/library/os.html#module-os

六、 使用shelve模塊操作文件
shelve模塊是個特殊的文件操作模塊,因爲它對應的文件用於存儲字典數據。使用時,先使用shelve.open打開文件,返回一個shelve.DbfilenameShelf,使用這個對象就像使用一個字典一樣。舉例:

>>> import shelve
>>> f=shelve.open(r"c:\temp\d.txt")
>>> f['1']=[10,11,12]
>>> f['2']=[20,21,22]      
>>> f.close()      
>>> type(f)      
<class 'shelve.DbfilenameShelf'>
>>>

具體語法請參見Python官網:https://docs.python.org/zh-cn/3/library/shelve.html#module-shelve

本節老猿介紹了幾種有別於前面介紹的io模塊文件操作的文件操作方法,包括使用io模塊進行文件迭代訪問,在某些場景下可以使得寫的代碼很精幹。
老猿Python,跟老猿學Python!
博客地址:https://blog.csdn.net/LaoYuanPython

請大家多多支持,點贊、評論和加關注!謝謝!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章