欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

Python中文件讀寫的操作方法-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!

創(chuàng)新互聯(lián)公司是專業(yè)的圖們網(wǎng)站建設(shè)公司,圖們接單;提供做網(wǎng)站、網(wǎng)站制作,網(wǎng)頁(yè)設(shè)計(jì),網(wǎng)站設(shè)計(jì),建網(wǎng)站,PHP網(wǎng)站建設(shè)等專業(yè)做網(wǎng)站服務(wù);采用PHP框架,可快速的進(jìn)行圖們網(wǎng)站開發(fā)網(wǎng)頁(yè)制作和功能擴(kuò)展;專業(yè)做搜索引擎喜愛的網(wǎng)站,專業(yè)的做網(wǎng)站團(tuán)隊(duì),希望更多企業(yè)前來合作!

小編給大家分享一下Python中文件讀寫的操作方法,希望大家閱讀完這篇文章后大所收獲,下面讓我們一起去探討吧!

Python中的文件讀寫-實(shí)際操作

Python中文件讀寫的操作方法

用Python打開文件

你需要知道的第一個(gè)功能是open()。在Python 2和Python 3中,此命令將返回參數(shù)中指定的文件對(duì)象?;竟δ苡梅╫pen()如下:

file_object = open(filename, mode)

在此實(shí)例中,filename是您要與之交互的文件的名稱,包含文件擴(kuò)展名。也就是說,如果你有一個(gè)文本文件workData.txt,你的文件名不僅僅是"workData"。是的"workData.txt"。

如果您使用的是Windows,還可以指定文件所在的確切路徑,例如“C:\ ThisFolder \ workData.txt”。

但請(qǐng)記住,字符串中的單個(gè)反斜杠向Python指示字符串文字的開頭。所以這里有一個(gè)問題,因?yàn)檫@兩個(gè)含義會(huì)發(fā)生沖突......

值得慶幸的是,Python有兩種方法可以解決這個(gè)問題。第一種是使用雙反斜杠:"C:\\ThisFolder\\workData.txt"。第二種是使用正斜杠:"C:/ThisFolder/workData.txt"。

open函數(shù)中的模式告訴Python你要對(duì)文件做什么。處理文本文件時(shí)可以指定多種模式。

'w'- 寫入模式:當(dāng)需要更改文件并更改或添加信息時(shí),使用此模式。請(qǐng)記住,這會(huì)擦除現(xiàn)有文件以創(chuàng)建新文件。文件指針位于文件的開頭。

'r'- 讀取模式:當(dāng)文件中的信息僅用于讀取而不以任何方式更改時(shí),使用此模式。文件指針位于文件的開頭。

'a'- 附加模式:此模式自動(dòng)將信息添加到文件末尾。文件指針放在文件的末尾。

'r+'- 讀/寫模式:當(dāng)您要更改文件并從中讀取信息時(shí)使用。文件指針位于文件的開頭。

'a+'- 附加和讀取模式:打開文件以允許將數(shù)據(jù)添加到文件末尾,并讓程序也讀取信息。文件指針放在文件的末尾。

使用二進(jìn)制文件時(shí),將使用相同的模式說明符。但是,您將ab添加到最后。所以二進(jìn)制文件的寫模式說明符是'wb'。其余的是'rb','ab','r+b',和'a+b'分別。

在Python 3中,添加了一個(gè)新模式:

'x'- 獨(dú)占創(chuàng)建模式:此模式專門用于創(chuàng)建文件。如果已存在同名文件,則函數(shù)調(diào)用將失敗。

我們來看一個(gè)如何打開文件和設(shè)置訪問模式的示例。

使用該open()函數(shù)時(shí),通常會(huì)將其結(jié)果賦給變量。給定一個(gè)名為的文件workData.txt,打開文件進(jìn)行讀寫的正確代碼如下:

data_file = open("workData.txt", "r+")

這將創(chuàng)建一個(gè)名為的對(duì)象data_file,然后我們可以使用Pythons 文件對(duì)象方法進(jìn)行操作。

我們'r+'在這個(gè)代碼示例中使用了訪問模式,它告訴Python我們要打開文件進(jìn)行讀寫。這為我們提供了很大的靈活性,但通常您可能希望將程序限制為只讀取或只是寫入文件,這是其他模式派上用場(chǎng)的地方。

在Python中關(guān)閉文件

在閱讀和寫作時(shí),了解如何關(guān)閉文件非常重要。

它釋放了程序用于I / O目的的系統(tǒng)資源。編寫具有空間或內(nèi)存限制的程序時(shí),可以有效地管理資源。

此外,關(guān)閉文件可確保將任何掛起的數(shù)據(jù)寫入底層存儲(chǔ)系統(tǒng),例如本地磁盤驅(qū)動(dòng)器。通過顯式關(guān)閉文件,您可以確保刷新內(nèi)存中的任何緩沖數(shù)據(jù)并將其寫入文件。

在Python中關(guān)閉文件的功能很簡(jiǎn)單fileobject.close()。使用data_file我們?cè)谏弦粋€(gè)示例中創(chuàng)建的文件對(duì)象,關(guān)閉它的命令將是:

data_file.close()

關(guān)閉文件后,在以后重新打開文件之前,您無法再訪問該文件。嘗試讀取或?qū)懭胍殃P(guān)閉的文件對(duì)象將引發(fā)ValueError異常:

>>> f = open("/tmp/myfile.txt", "w")
>>> f.close()
>>> f.read()Traceback (most recent call last):
  File "<input>", line 1, in <module>
    f.read()ValueError: I/O operation on closed file.

在Python中,打開和關(guān)閉文件的最佳實(shí)踐使用with關(guān)鍵字。嵌套代碼塊完成后,此關(guān)鍵字將自動(dòng)關(guān)閉文件:

with open("workData.txt", "r+") as workData:
    # File object is now open.
    # Do stuff with the file:
    workData.read()
# File object is now closed.
# Do other things...

如果您不使用該with關(guān)鍵字或使用該fileobject.close()函數(shù),那么Python將通過內(nèi)置的垃圾收集器自動(dòng)關(guān)閉并銷毀文件對(duì)象。但是,根據(jù)您的代碼,此垃圾收集可以隨時(shí)進(jìn)行。

所以建議使用with關(guān)鍵字來控制何時(shí)關(guān)閉文件 - 即在內(nèi)部代碼塊完成執(zhí)行之后。

使用Python文件對(duì)象

成功打開文件后,可以使用內(nèi)置方法處理新文件對(duì)象。您可以從中讀取數(shù)據(jù),也可以向其中寫入新數(shù)據(jù)。還有其他操作,如移動(dòng)“讀/寫指針”,它確定從中讀取文件數(shù)據(jù)的位置以及寫入的位置。

接下來,將學(xué)習(xí)如何從打開的文件中讀取數(shù)據(jù):

在Python中從文件中讀取數(shù)據(jù)

讀取文件的內(nèi)容使用該fileobject.read(size)方法。默認(rèn)情況下,此方法將讀取整個(gè)文件并將其作為字符串(在文本模式下)或字節(jié)對(duì)象(在二進(jìn)制模式下)打印到控制臺(tái)。

但是,使用默認(rèn)大小時(shí)必須小心。如果您正在閱讀的文件大于可用內(nèi)存,則無法一次訪問整個(gè)文件。在這種情況下,您需要使用該size參數(shù)將其分解為內(nèi)存可以處理的塊。

該size參數(shù)告訴read方法有多少字節(jié)進(jìn)入文件返回顯示。因此,我們假設(shè)我們的“workData.txt”文件中包含以下文本:

This data is on line 1
This data is on line 2
This data is on line 3

然后,如果您在Python 3中編寫以下程序:

with open("workData.txt", "r+") as work_data:
    print("This is the file name: ", work_data.name)
    line = work_data.read()
    print(line)

你會(huì)得到這個(gè)輸出:

This is the file name: workData.txt
This data is on line 1
This data is on line 2
This data is on line 3

另一方面,如果你調(diào)整第三行說:

line = workData.read(6)

您將獲得以下輸出:

This is the file name: workData.txt
This d

如您所見,讀取操作僅讀取文件中的數(shù)據(jù)到位6,這是我們傳遞給read()上面的調(diào)用的內(nèi)容。這樣,您可以一次性限制從文件中讀取的數(shù)據(jù)量。

如果再次從同一文件對(duì)象中讀取,它將繼續(xù)讀取您中斷的數(shù)據(jù)。這樣,您就可以在幾個(gè)較小的“塊”中處理大型文件。

逐行閱讀文本文件 readline()

您還可以通過逐行讀取來解析文件中的數(shù)據(jù)。這可以讓您逐行掃描整個(gè)文件,只在您想要的時(shí)候前進(jìn),或者讓您看到特定的行。

該fileobject.readline(size)方法默認(rèn)返回文件的第一行。但是通過更改整數(shù)size參數(shù),您可以獲得所需文件中的任何行。

例如:

with open("workData.txt", "r+") as work_data:
     print("This is the file name: ", work_data.name)
     line_data = work_data.readline()
     print(line_data)

這將返回以下輸出:

This is the file name:  workData.txt
This data is on line 1

將a 2或a 3作為size變量將相應(yīng)地返回第二行或第三行。

類似的方法是fileobject.readlines()調(diào)用(注意復(fù)數(shù)),它以元組格式返回每一行。如果您打電話:

print(work_data.readlines())

您將獲得以下輸出:

['This data is on line 1', 'This data is on line 2', 'This data is on line 3']

如您所見,這會(huì)將整個(gè)文件讀入內(nèi)存并將其拆分為多行。但這僅適用于文本文件。二進(jìn)制文件只是一個(gè)數(shù)據(jù)塊 - 它實(shí)際上并不具有單行的概念。

逐行處理整個(gè)文本文件

在Python中逐行處理整個(gè)文本文件的最簡(jiǎn)單方法是使用一個(gè)簡(jiǎn)單的循環(huán):

with open("workData.txt", "r+") as work_data:
    for line in work_data:
        print(line)

這有以下輸出:

This data is on line 1
This data is on line 2
This data is on line 3

這種方法非常節(jié)省內(nèi)存,因?yàn)槲覀儗为?dú)讀取和處理每一行。這意味著我們的程序永遠(yuǎn)不需要立即將整個(gè)文件讀入內(nèi)存。因此,使用readline()是一種以較小的塊處理大文本文件的舒適且有效的方式。

使用Python寫入文件到Python write()

如果您無法向他們寫入數(shù)據(jù),那么文件就不會(huì)有任何好處。

請(qǐng)記住,當(dāng)您創(chuàng)建新文件對(duì)象時(shí),如果文件尚不存在,Python將創(chuàng)建該文件。首次創(chuàng)建文件時(shí),您應(yīng)該使用a+或w+模式。

通常最好使用該a+模式,因?yàn)閿?shù)據(jù)將默認(rèn)添加到文件的末尾。使用w+將清除文件中的任何現(xiàn)有數(shù)據(jù),并為您提供“空白”。

在Python中寫入文件的默認(rèn)方法是使用fileobject.write(data)。例如,您可以使用以下代碼在我們的“workData.txt”文件中添加一個(gè)新行:

work_data.write("This data is on line 4\n")

的\n充當(dāng)新行指示,移動(dòng)后續(xù)寫入到下一行。

如果要將不是字符串的內(nèi)容寫入文本文件(例如一系列數(shù)字),則必須使用轉(zhuǎn)換代碼將它們轉(zhuǎn)換或“轉(zhuǎn)換”為字符串。

例如,如果要將整數(shù)1234,5678,9012添加到work_data文件中,則執(zhí)行以下操作。首先,將非字符串轉(zhuǎn)換為字符串,然后將該字符串寫入文件對(duì)象:

values = [1234, 5678, 9012]with open("workData.txt", "a+") as work_data:
    for value in values:
        str_value = str(value)
        work_data.write(str_value)
        work_data.write("\n")

文件搜索:移動(dòng)讀/寫指針

請(qǐng)記住,使用a+模式編寫時(shí),文件指針始終位于文件末尾。因此,在我們編寫兩個(gè)數(shù)字的情況下使用上面的代碼,如果你使用這個(gè)fileobject.write()方法,你就不會(huì)得到任何回報(bào)。那是因?yàn)樵摲椒ㄕ趯ふ抑赶蚱渌谋镜闹羔槨?/p>

那么你需要做的是將指針移回文件的開頭。最簡(jiǎn)單的方法是使用該fileobject.seek(offset, from_what)方法。在此方法中,您將指針放在特定位置。

偏移量是from_what參數(shù)中的字符數(shù)。該from_what參數(shù)有三個(gè)可能的值:

0 - 表示文件的開頭

1 - 表示當(dāng)前指針位置

2 - 表示文件的結(jié)尾

當(dāng)您使用文本文件(那些在模式下沒有使用ab打開的文件)時(shí),您只能使用默認(rèn)值0或a seek(0, 2),它將帶您到文件的末尾。

因此,通過work_data.seek(3, 0)在我們的“workData.txt”文件中使用,您將指針放在第4個(gè)字符處(請(qǐng)記住,Python開始計(jì)數(shù)為0)。如果使用行打印循環(huán),則會(huì)得到以下輸出:

s data is on line 1
This data is on line 2
This data is on line 3

如果要檢查指針的當(dāng)前位置,可以使用該fileobject.tell()方法,該方法返回當(dāng)前文件中指針?biāo)谖恢玫氖M(jìn)制值。如果我們想查找當(dāng)前work_data文件的時(shí)長(zhǎng),我們可以使用以下代碼:

with open("workData.txt", "a+") as work_data:
    print(work_data.tell())

這將返回69,這是文件的大小。

使用Python編輯現(xiàn)有文本文件

您需要編輯現(xiàn)有文件而不是僅向其附加數(shù)據(jù)。你不能只使用w+模式來做到這一點(diǎn)。請(qǐng)記住,該模式w將完全覆蓋該文件,因此即使使用fileobject.seek(),您也無法執(zhí)行此操作。而且a+總是在文件的末尾插入任何數(shù)據(jù)。

最簡(jiǎn)單的方法是將整個(gè)文件拉出來并使用它創(chuàng)建列表或數(shù)組數(shù)據(jù)類型。創(chuàng)建列表后,您可以使用該list.insert(i, x)方法插入新數(shù)據(jù)。創(chuàng)建新列表后,您可以將其重新連接在一起并將其寫回文件。

請(qǐng)記住,對(duì)于list.insert(i, x),i是一個(gè)整數(shù),表示細(xì)胞數(shù)。然后將x的數(shù)據(jù)放在指示的列表中的單元格之前i。

例如,使用我們的“workData.txt”文件,假設(shè)我們需要在第一行和第二行之間插入文本行“這在第1行和第2行之間”。這樣做的代碼是:

# Open the file as read-only
with open("workData.txt", "r") as work_data:
    work_data_contents = work_data.readlines()
work_data_contents.insert(1, "This goes between line 1 and 2\n")
# Re-open in write-only format to overwrite old file
with open("workData.txt", "w") as work_data:
    work_dataContents = "".join(work_data_contents)
    work_data.write(work_data_contents)

運(yùn)行此代碼后,如果執(zhí)行以下操作:

with open("workData.txt", "r") as work_data:
    for line in work_data:
        print(line)

你會(huì)得到一個(gè)輸出:

This data is on line 1
This goes between line 1 and 2
This data is on line 2
This data is on line 3

看完了這篇文章,相信你對(duì)Python中文件讀寫的操作方法有了一定的了解,想了解更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道,感謝各位的閱讀!

當(dāng)前題目:Python中文件讀寫的操作方法-創(chuàng)新互聯(lián)
本文URL:http://aaarwkj.com/article4/ccodoe.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站導(dǎo)航、品牌網(wǎng)站設(shè)計(jì)、小程序開發(fā)、移動(dòng)網(wǎng)站建設(shè)、虛擬主機(jī)、Google

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

綿陽(yáng)服務(wù)器托管
日本一区二区三区免费不卡视频| 久久国产精品一区免费观看| 麻豆国产传媒片在线看| av熟女一区二区三区| 日韩亚洲欧美不卡在线| 精品人妻一区二区三区蜜桃电| 人人澡人人看人人妻| 婷婷激情六月中文字幕| 蜜臀av在线播放黑丝| 日本一区二区电影在线看| 欧美黄片在线免费观看视频| 国产婷婷成人久久av免费高清| 老熟女露脸吞精一二三四区| 青草成人在线视频观看| 日本成人精品二区在线观看| 国产精品观看在线亚洲人成网| 亚洲免费小视频在线观看| 久久国产亚洲精品赲碰热| 五月开心婷婷开心五月活动推荐| 亚洲欧美日韩国产一区二区三区| 亚洲不卡在线免费av| 粉嫩在线一区二区懂色| 国产欧美日韩一级二级三级| 青青草原免费在线观看| 日本在线高清精品人妻| 女人高潮被爽到呻吟在线| 熟女肥臀一区二区三区| 亚洲中文字幕av每天更新| 国产又大又爽免费视频| 狼人私人影院在线观看| 国产精品大片久久激情四射| 久久精品色一情一乱一伦| 欧美激情三级一区二区| 日韩在线不卡一二三| 欧美久久久久综合一区| 丰满的少妇一区二区三区免费观看 | 涩五月婷婷开心中文字幕| 精品国产伦一区二区三区在线| 免费av在线观看日韩| 日韩精品一区二区在线天天狠天| 十八禁无遮挡污污污网站|