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

歡迎訪問 生活随笔!

生活随笔

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

python

Python对文件的操作(转)

發布時間:2023/12/9 python 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Python对文件的操作(转) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、文件對象

我理解的文件對象就是一個接口,通過這個接口對文件進行相關操作。

《Python 核心編程》上說的很晦澀,這里沒有深刻理解到,希望有人能解釋給我聽。

>>> f = open('demo.txt','r') >>> f <open file 'demo.txt', mode 'r' at 0x00CCCEC0> >>> type(f) <type 'file'>

二、相關函數

[1]、內建函數:open()

提供了初始化輸入/輸出(I/O)操作的通用接口,成功打開一個文件后會返回一個文件對象,否則發生IOError異常。語法如下:

file_object = open(file_name,access_mode = 'r',buffering = -1)

分析如下:

1):file_name:表示要打開文件名字的字符串,可以是相對路徑也可以是絕對路徑。
如:我在D盤新建一個空白名為out的文本文件,然后進行相關操作。

>>> f = open('../out.txt','w') >>> f.write('good') >>> f.close()

則打開該文件后,發現'good'已經寫入進去了。

接下來使用絕對路徑進行訪問,如下:

>>> f = open('D:/out.txt','r') >>> f.read() 'good' >>> f.close()

2、可選變量access_mode也是字符串,代表文件打開模式。

注意:

1):使用'r'或'U'模式打開的文件必須已經存在

2):'w'模式打開的文件若存在則先清空,然后重新創建

3):'a'模式打開的文件是為了追加數據做準備的,所有寫入的數據將追加到文件末尾。如果文件不存在,則自動被創建。

4):'+'代表可讀可寫

5):'b'代表二進制模式訪問

6):默認情況下是 'r'

3、buffering可選參數,用于指示訪問文件所采用的緩存方式。0表示不緩存;1表示只緩存一行,n代表緩存n行。如果不提供或為負數,則代表使用系統默認的緩存機制。

用處?這個麻煩有人能告訴我!

關閉文件:

打開文件消耗系統資源, 并且依賴于文件模式, 其它程序或許不能訪問它們。這就是一旦操作完畢就該關閉文件的重要所在。

接上面的操作,加入還沒有關閉:

>>> f.closed #判斷是否關閉 False >>> f.close() #關閉方法 >>> f.closed True >>> f.tell() #如果已關閉,則一切針對文件操作都無效Traceback (most recent call last):File "<pyshell#27>", line 1, in <module>f.tell() ValueError: I/O operation on closed file >>>

[2]、工廠函數file()

與open()一樣,可相互替換

>>> f = file('../out.txt','r') >>> f.read() 'good' >>> f.close()

三、相關方法

返回一個文件對象后(句柄),其實我也不清楚到底什么是句柄,這里摘自百度百科:

句柄,是整個windows編程的基礎。一個句柄是指使用的一個唯一的整數值,即一個四字節長的數值,來標志應用程序中的不同對象和同類對象中的不同的實 例,諸如,一個窗口,按鈕,圖標,滾動條,輸出設備,控件或者文件等。應用程序能夠通過句柄訪問相應的對象的信息,但是句柄不是一個指針,程序不能利用句柄來直接閱讀文件中的信息。如果句柄不用在I/O文件中,它是毫無用處的。 句柄是windows用來標志應用程序中建立的或是使用的唯一整數,windows使用了大量的句柄來標志很多對象。

一般與文件相關的方法無非是:輸入、輸出、文件內移動、雜項

[1]、輸入

1、read():讀取字節到字符串中,有可選參數size,默認是-1,如果為-1或復數則文件將會被讀取到文件末尾。

>>> f.read() 'good' >>> f.read(2) 'go'

2、readline():讀取文件的一行,包括行結束符。同read()也有個可選參數size。

3、readlines():讀取所有(剩余的)然后將它們作為字符串列表返回,它有個可選參數sizhint代表返回的最大字大小。

>>> f = file('../out.txt','r') >>> f.readlines() ['good']

[2]、輸出

1、write():把含有文本數據或二進制數據塊的字符串寫入到文件中去。

2、writelines():針對列表操作,接受一個字符串列表作為參數,將它們寫入文件,行結束符并不會被自動加入,如果需要的話必須在調用writelines方法前給每一行結尾加上結束符。

>>> f = open('d:/out.txt','w') >>> f.writelines(['man']) >>> f.close() >>> f = open('d:/out.txt','r') >>> f.read() 'man'

【注意:】

當使用read()或者readlines()從文件中讀取行時,Python并不會刪除行結束符,這個操作留給了程序員。

>>> f.readlines() ['game is your life,game is your life,game is your life,game is your life,game is your life,[*]\n', 'game is your life,game is your life,game is your life[]']--------------------------- >>> f = open('demo.txt','r') >>> data = [line.strip() for line in f.readlines()] >>> data ['game is your life,game is your life,game is your life,game is your life,game is your life,[*]', 'game is your life,game is your life,game is your life[]']

類似的,write()和writelines()也不會自動加入行結束符,應該自己添加。

>>> f = open('demo.txt','w') >>> f.writelines([' my name is BeginMan\n,I like coding']) >>> f.close()

打開該文件可查看:

[3]、文件內移動

tell()、seek()方法

f = open('d:/out.txt','rb') print f.tell() #[1] f.seek(10,1) #[2] print f.tell() #10 print f.read(10) # BeginMan, print f.read(18) #I like coding. print f.tell() #38""" 【1】:tell(): tell 方法確認了已經移到當前文件位置 一個文件對象維護它所打開文件的狀態。文件對象的 tell 方法告訴你在打開文件中的當前位置。 因為我們還沒有對這個文件做任何事,當前位置為 0,它是文件的開始處。 """ """ 【2】:seek(): 文件對象的 seek 方法在打開文件中移動到另一個位置。第二個參數指出第一個參數是什么意思: 0 表示移動到一個絕對位置 (從文件開始算起), 1 表示移到一個相對位置 (從當前位置算起), 還有 2 表示文件末尾 """

[4]、文件迭代

>>> f = open('d:/out.txt','rb') >>> for eachline in f:eachline'my name is BeginMan,\r\n' 'I like coding.\r\n'

四、相關屬性

file.closed:文件已被關閉,否則為False

file.mode:文件訪問模式

file.name:文件名稱

>>> f.mode 'r' >>> f.name 'demo.txt'

FROM:http://www.cnblogs.com/BeginMan/p/3166644.html

轉載于:https://www.cnblogs.com/rusking/p/5119796.html

總結

以上是生活随笔為你收集整理的Python对文件的操作(转)的全部內容,希望文章能夠幫你解決所遇到的問題。

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