您好,登錄后才能下訂單哦!
本篇內(nèi)容主要講解“Python文件處理方法有哪些”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強(qiáng)。下面就讓小編來帶大家學(xué)習(xí)“Python文件處理方法有哪些”吧!
# 打開example.txt文件,并返回文件對象filewith open('example.txt') as file:# 通過read()讀取文件的全部內(nèi)容,并將其作為一個字符串存儲在all_contents中all_contents = file.read()# 顯示全部內(nèi)容print(all_contents)
執(zhí)行該程序后,輸出example.txt文件中的全部內(nèi)容:
君不見黃河之水天上來,奔流到海不復(fù)回。 君不見高堂明鏡悲白發(fā),朝如青絲暮成雪。 人生得意須盡歡,莫使金樽空對月。 天生我材必有用,千金散盡還復(fù)來。
with open('example.txt') as file:# 遍歷文件中的每一行for line in file:print(line)
執(zhí)行該程序后,逐行輸出example.txt文件中的每一行內(nèi)容:
君不見黃河之水天上來,奔流到海不復(fù)回。 君不見高堂明鏡悲白發(fā),朝如青絲暮成雪。 人生得意須盡歡,莫使金樽空對月。 天生我材必有用,千金散盡還復(fù)來。
容易發(fā)現(xiàn),輸出每一行內(nèi)容后,都多了一個空行。 這是因為每行的末尾都有一個看不見的換行符,而 print 語句也會加上一個換行符,因此每行末尾都有兩個換行符:一個來自文件,另一個來自 print 語句。要消除這些多余的空白行,可在 print 語句中使用 rstrip() :
print(line.rstrip())
使用關(guān)鍵字 with 時, open() 返回的文件對象只在 with 代碼塊內(nèi)可用。如果要在 with 代碼塊外訪問文件的內(nèi)容,可在 with 代碼塊內(nèi)將文件的各行存儲在一個列表中,并在 with 代碼塊外使用該列表:你可以立即處理文件的各個部分,也可推遲到程序后面再處理。
下面的示例在 with 結(jié)構(gòu)中將文件 example.txt 的各行存儲在一個列表中,再在 with 代碼塊外打印它們:
with open("example.txt") as file:# 從文件中讀取每一行,并將其存儲在一個列表lines中l(wèi)ines = file.readlines()# 逐行打印內(nèi)容for line in lines:print(line.rstrip())
執(zhí)行該程序后,逐行輸出example.txt文件中的每一行內(nèi)容:
君不見黃河之水天上來,奔流到海不復(fù)回。 君不見高堂明鏡悲白發(fā),朝如青絲暮成雪。 人生得意須盡歡,莫使金樽空對月。 天生我材必有用,千金散盡還復(fù)來。
在前面的示例中,我們使用的open()其實包含兩個參數(shù):
第一個參數(shù)filename。表示到打開或者寫入的文件名;
第二個參數(shù)mode。模式有三種選擇:讀取模式(‘r’)、寫入模式(‘w’)、附加模式(‘a(chǎn)’)。如果你省略了模式實參, Python 將以默認(rèn)的只讀模式打開文件。
要將文本寫入文件,你在調(diào)用 open() 時需要提供另一個實參——寫入模式(‘w’),告訴 Python 你要寫入打開的文件。為明白其中的工作原理,我們來將一條簡單的消息存儲到文件中:
# 以寫入模式打開文件with open("writeFile.txt", "w") as file:# write()將一個字符串寫入文件file.write("I Love Python!")
執(zhí)行后,可以發(fā)現(xiàn)在你的工程目錄下產(chǎn)生了一個新的文件writeFile.txt,該文件中的內(nèi)容是:I Love Python!
注意:Python 只能將字符串寫入文本文件。要將數(shù)值數(shù)據(jù)存儲到文本文件中,必須先使用函數(shù) str() 將其轉(zhuǎn)換為字符串格式。
函數(shù) write() 不會在你寫入的文本末尾添加換行符,因此你可以在寫入時指定換行符:
# 以寫入模式打開文件with open("writeFile.txt", "w") as file:# write()將一個字符串寫入文件,并換行file.write("I Love Python!\n")file.write("AI Jun Love Python too!\n")
執(zhí)行后,可以發(fā)現(xiàn)生成的新文件writeFile.txt中有兩行內(nèi)容:
I Love Python! AI Jun Love Python too!
注意:如果在工程目錄下已有writeFile.txt文件,則新寫入的內(nèi)容會覆蓋原來的所有內(nèi)容。
如果你要給文件添加內(nèi)容,而不是覆蓋原有的內(nèi)容,可以 附加模式 打開文件。你以附加模式打開文件時, Python 不會在返回文件對象前清空文件,而你寫入到文件的行都將添加到文件末尾。如果指定的文件不存在, Python 將為你創(chuàng)建一個空文件。
接下來,在既有文件 writeFile.txt 中再添加一些新的內(nèi)容:
with open("writeFile.txt", "a") as file:# 在原來writeFile.txt文件中新添內(nèi)容file.write("I Love Python beacause it can work well!")
執(zhí)行后,在原內(nèi)容中新增了一行:
I Love Python! AI Jun Love Python too! I Love Python beacause it can work well!
模塊 json 讓你能夠?qū)⒑唵蔚?Python 數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)儲到文件中,并在程序再次運(yùn)行時加載該文件中的數(shù)據(jù)。你還可以使用 json 在 Python 程序之間分享數(shù)據(jù)。更重要的是, JSON 數(shù)據(jù)格式并非 Python 專用的,這讓你能夠?qū)⒁?JSON 格式存儲的數(shù)據(jù)與使用其他編程語言的人分享。這是一種輕便格式,很有用,也易于學(xué)習(xí)。
JSON ( JavaScript Object Notation )格式最初是為 JavaScript 開發(fā)的,但隨后成了一種常見格式,被包括 Python 在內(nèi)的眾多語言采用。
使用 json.dump() 將數(shù)據(jù)存儲到JSON文件中:
# 導(dǎo)入模塊 jsonimport json# 新建一個列表numbers = [1,2,3,4,5]# 以寫入模式打開這個文件new.jsonwith open("new.json", "w") as file:# 使用json.dump()將數(shù)字列表存儲到文件中json.dump(numbers, file)
執(zhí)行后,在工程目錄下生成一個新的文件new.json,文件中存儲著新添的數(shù)據(jù):[1, 2, 3, 4, 5]
注:json是Python中的內(nèi)置模塊,在編寫相關(guān)程序時,可以直接使用import導(dǎo)入,不需要額外的安裝json庫。
以寫入模式打開文件,寫入的內(nèi)容會覆蓋原來文件中的內(nèi)容。有時希望在源文件中添加新的內(nèi)容,這時就必須以附加模式打開文件,如下所示:
# 導(dǎo)入模塊 jsonimport json# 新建一個列表list = [6, 7, 8, 9, 10]# 以附加模式打開這個文件new.jsonwith open("new.json", "a") as file:# 使用json.dump()將數(shù)字列表存儲到文件中json.dump(list, file)
執(zhí)行完后,程序在原來的new.json文件中新添了內(nèi)容:[6, 7, 8, 9, 10]
接下來,使用函數(shù) json.load() 將JSON文件中的列表讀取到內(nèi)存中:
# 導(dǎo)入模塊 jsonimport json# 以只讀模式打開這個文件new.jsonwith open("new.json", "r") as file:# 使用json.load()將JSON文件中的內(nèi)容讀取到內(nèi)存list = json.load(file)print("JSON文件中存儲的內(nèi)容是:", list)
運(yùn)行結(jié)果:
JSON文件中存儲的內(nèi)容是: [1, 2, 3, 4, 5]
到此,相信大家對“Python文件處理方法有哪些”有了更深的了解,不妨來實際操作一番吧!這里是億速云網(wǎng)站,更多相關(guān)內(nèi)容可以進(jìn)入相關(guān)頻道進(jìn)行查詢,關(guān)注我們,繼續(xù)學(xué)習(xí)!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。