日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python创建文件对象_python基础教程:文件读写

發布時間:2023/12/3 python 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python创建文件对象_python基础教程:文件读写 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

在Linux系統中,一切都是文件。但我們通常說的文件是保存在磁盤上的圖片、文檔、數據、程序等等。而在程序的IO操作中,很多時候就是從磁盤讀寫文件。本節我們講解Python中的文件對象如何操作文件。

創建文件對象

通過Python內置函數open()可以很容易的創建一個文件對象。open函數有很多參數,最常用的有兩個,使用open函數最常用的方法是:open(filename, mode)。

f = open('myfile', 'w')

第一個參數filename是文件名的字符串,比如myfile。第二個參數也是一個字符串,表示文件使用方式。mode的可選項如下:

mode

含義

‘r’

以只讀模式打開(默認)

‘w’

以可寫模式打開,并清楚文件內容(如果文件存在的話)

‘x’

創建一個新文件并以可寫模式打開

‘a’

以可寫模式打開,從文件末尾開始寫入(如果文件存在的話)

‘b’

二進制模式

‘t’

文本模式(默認)

’+’

打開一個已存在文件以便進行更新(讀和寫)

其中的'b'和't'是指定文件內容是文本還是二進制,其它都說是關于讀寫方式的。

'b'是二進制模式打開文件,讀寫的數據都是字節對象(bytes),這個模式可以讀寫一切文件,包括文本文件,但讀寫文本文件時要注意編碼的問題。

't'是文本模式下讀寫文件。讀取時,默認會把平臺特定的行結束符 (Unix 上的\n, Windows 上的?\r\n)轉換為\n。寫入是,默認會把出現的\n?轉換回平臺特定的結束符。這種默認的“幕后修改”對文本文件來說沒有問題,但會破壞二進制數據(比如,JPEG或exe)文件中的數據。

在使用open創建文件對象時,最好使用?with?關鍵字。其好處是,當字句體結束后文件會正確關閉,即使在某個時刻引發了異常。并且with比等效的try-finally代碼塊更簡短:

In [102]: with open('myfile') as f:

...: data = f.read()

...:

In [103]: f.closed

Out[103]: True

如果沒使用with關鍵字,就要調用f.close()來關閉文件并立即釋放它使用的系統資源。如果沒有顯示的關閉文件,Python的垃圾回收器最終將銷毀該對象并為你關閉打開的文件,但這個文件可能會保持打開狀態一段時間。另外一個風險是不同的Python實現會在不同的時間進行清理。

通過 with 語句或者調用 f.close() 關閉文件對象后,嘗試使用該文件對象將自動失敗。

文件對象的方法

通過上面的方法創建文件對象f后,,我們就可以通過其對應的方法讀寫數據了。

(1)寫內容到文件:f.write(string)

把內容寫入文件的方法是write()方法,傳遞的對象必須是字符串(文本模式下)或字節對象(二進制模式下)。如果要寫入其它類型的對象(比如,字典、列表等等),就要先把它們轉換成字符串(文本模式下)或字節對象(二進制模式下)。

In [109]: f = open('myfile', 'w')

In [110]: f.write('認真學Python,就是文件的全部內容。\n')

Out[110]: 21

In [111]: f.close()

(2)讀取文件內容:f.read(size)

它會讀取文件里面的數據并將其返回為字符串(在文本模式下),或者字節對象(二進制模式)。參數size是一個可選的整數參數,當size被省略或為負的時候,讀取文件的全部內容;如果文件的大小是機器內存的兩倍或更大,那么可能出現錯誤。讀取并返回的size大小的內容。如果已經讀完全部內容(到達文件末尾),將返回一個空字符串。

In [112]: f = open('myfile')

In [113]: f.read()

Out[113]: '認真學Python,就是文件的全部內容。\n'

In [114]: f.read()

Out[114]: ''

f.readline()?從文件讀取一行,換行符\n留住字符串末尾;

f.readlines()?讀取文件所有行,返回一個字符串的列表;

In [118]: f.readline()

Out[118]: '認真學Python,就是文件的全部內容。\n'

In [119]: f.seek(0)

Out[119]: 0

In [120]: f.readlines()

Out[120]: ['認真學Python,就是文件的全部內容。\n']

遍歷文件的所有行,也可以用遍歷文件對象的方式,這是內存高效、快速并簡單的方式:

In [122]: for line in f:

...: print(line)

...:

認真學Python,就是文件的全部內容。

(3)文件對象的位置

前面的例子中,我們已經讀到文件的末尾,如果要再從頭讀的話就要調用f.seek(0)來設置文件對象的位置到文件開頭。這個方法有兩個參數:f.seek(cookie, whence=0)

cookie 是位置偏移量

whence 是相對位置,它有三種相對位置:

0 文件開頭,偏移量是0或整數;

1 當前位置,偏移量可以是負數;

2 文件末尾,偏移量通常是負數;

如何查看當前位置呢?調用f.tell()方法。

總結

以上是生活随笔為你收集整理的python创建文件对象_python基础教程:文件读写的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。