最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python常見(jiàn)文件操作的示例詳解

 更新時(shí)間:2022年07月12日 10:00:59   作者:從未止步..  
文件操作是我們開(kāi)發(fā)中必不可少的一項(xiàng)需求。本文主要給大家介紹了關(guān)于Python常見(jiàn)的一些文件操作,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

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

1:讀取整個(gè)文件

首先創(chuàng)建一個(gè)文件,它包含一些文本信息,注意:如果該文件為.py文件,則再進(jìn)行操作的時(shí)候可以不寫路徑,如果不是.py文件,則必須標(biāo)明路徑。

現(xiàn)在我們創(chuàng)建一個(gè)python文件,名為text.py,給他寫入如下文本信息:

下面的程序打開(kāi)并讀取這個(gè)文件,再將其內(nèi)容顯示到屏幕上:

with open('text.py') as pythonProject2:#open(要打開(kāi)的文件名稱)
#open函數(shù)返回一個(gè)表示文件test.py的對(duì)象,python將該對(duì)象賦給pythonProject2
    cc=pythonProject2.read()
print(cc)

python在當(dāng)前執(zhí)行的文件所在目錄中查找指定的文件

關(guān)鍵字 with 在不再需要訪問(wèn)文件后將其關(guān)閉在這個(gè)程序中,注意到我們調(diào)用了 open(),但沒(méi)有調(diào)用 close()。也可以調(diào)用 open()和 close()來(lái)打開(kāi)和關(guān)閉文件,但這樣做時(shí),如果程序存在 bug 導(dǎo)致方法 close()未執(zhí)行,文件將不會(huì)關(guān)閉。這看似微不足道,但未妥善關(guān)閉文件可能導(dǎo)致數(shù)據(jù)丟失或受損。如果在程序中過(guò)早調(diào)用 close(),你會(huì)發(fā)現(xiàn)需要使用文件時(shí)它已關(guān)閉(無(wú)法訪問(wèn)),這會(huì)導(dǎo)致更多的錯(cuò)誤。并非在任何情況下都能輕松確定關(guān)閉文件的恰當(dāng)時(shí)機(jī),但通過(guò)使用前面所示的結(jié)構(gòu)(with open(需要打開(kāi)的文件名稱) as 賦給另一個(gè)對(duì)象),可讓 Python 去確定:你只管打開(kāi)文件,并在需要時(shí)使用它,Python 自會(huì)在合適的時(shí)候自動(dòng)將其關(guān)閉。

細(xì)心的同學(xué)已經(jīng)發(fā)現(xiàn)了,我們上文所輸出的內(nèi)容多了一行空格,原因是:read()到達(dá)文件末尾的時(shí)候返回一個(gè)空的字符串,而將這個(gè)空字符串顯示出來(lái)就是一個(gè)空格,而想要?jiǎng)h除空行只需要使用我們之前學(xué)習(xí)過(guò)的rstrip()函數(shù)。

為什么要提供文件路徑

將類似于 .txt 的簡(jiǎn)單文件名傳遞給函數(shù) open()時(shí),Python 將在當(dāng)前執(zhí)行的文件(即物程序文件)所在的目錄中查找。

根據(jù)你組織文件的方式,有時(shí)可能要打開(kāi)不在程序文件所屬目錄中的文件。例如,你可能將程序文件存儲(chǔ)在了文件夾 python_work中,而該文件夾中有一個(gè)名為 text_files 的文件夾用于存儲(chǔ)程序文件操作的文本文件。雖然文件夾 text_files 包含在文件夾python_work 中,但僅向 open()傳遞位于前者中的文件名稱也不可行,因?yàn)?Python 只在文件夾 python_work中查找,而不會(huì)在其子文件夾 text_files 中查找。要讓 Python 打開(kāi)不與程序文件位于同一個(gè)目錄中的文件,需要提供文件路徑,讓Python 到系統(tǒng)的特定位置去查找。

否則會(huì)出現(xiàn)如下圖所示:python會(huì)告訴你找不到該文件

那么該怎么解決這個(gè)問(wèn)題呢?

這里我們就需要用絕對(duì)路徑,例如,我們現(xiàn)在建立一個(gè).txt在桌面。

下面我們使用相對(duì)路徑(僅提供文件名的方式),去打開(kāi):

with open(r"新建文本文檔.txt",'r',encoding='utf-8') as f:
    ff=f.read()
print(ff)

我們發(fā)現(xiàn)文件根本打不開(kāi)。

現(xiàn)在我們使用絕對(duì)路徑(提供具體的位置信息),去打開(kāi):

with open(r"C:\Users\Lenovo\Desktop\新建文本文檔.txt",'r',encoding='utf-8') as f:
    ff=f.read()
print(ff)

文件內(nèi)容被很好的顯示出來(lái)了。

注:encoding='utf-8的作用是為了避免出現(xiàn)亂碼。

上圖所示程序,不加encoding='utf-8,就會(huì)出現(xiàn)以下情況;

注:顯示文件路徑時(shí),Windows系統(tǒng)使用反斜杠(\),而不是斜杠(/),但在代碼中仍可以使用斜杠。

如果在文件路徑中直接使用反斜杠,將引發(fā)錯(cuò)誤,因?yàn)榉葱备苡糜趯?duì)字符串中的字符進(jìn)行轉(zhuǎn)義。

舉例:

C:\path\to\file.txt

其中的\t會(huì)被解讀為制表符,如果一定要使用反斜杠,可對(duì)相對(duì)路徑中的每個(gè)反斜杠都進(jìn)行轉(zhuǎn)義:

C:\\path\\to\\file.txt

逐行讀取

讀取文件時(shí),常常需要檢查其中的每一行:可能要在文件中查找特定的信息,或者要以某種方式修改文件中的文本。

直接使用for循環(huán)的方法:

在該目錄下的文件讀取:

for line in open("123.txt",encoding='utf-8'):
    print(line)

計(jì)算機(jī)其他位置中的:

for line in open(r"C:\Users\Lenovo\Desktop\新建文本文檔.txt",encoding='utf-8'):
    print(line)

使用while循環(huán)

在該目錄下的文件讀?。?/p>

f=open("123.txt",encoding='utf-8')
line=f.readline()
while line:
    print(line)
    line=f.readline()
f.close()

計(jì)算機(jī)其他位置中的:

f=open(r"C:\Users\Lenovo\Desktop\新建文本文檔.txt",encoding='utf-8')
line=f.readline()
while line:
    print(line)
    line=f.readline()
f.close()

使用with…as結(jié)構(gòu)

在該目錄下的文件讀?。?/p>

with open("123.txt",encoding='utf-8') as f:
    for line  in f:
        print(line)

計(jì)算機(jī)其他位置中的:

with open(r"C:\Users\Lenovo\Desktop\新建文本文檔.txt",encoding='utf-8') as f:
    for line in f:
        print(line)

運(yùn)行上面兩個(gè)文件的結(jié)果:

hi,python

早上好

晚上好

你好

窗前明月光,疑似地上霜

舉頭望明月,低頭思?xì)w鄉(xiāng)

鵝鵝鵝,曲項(xiàng)向天歌

白毛浮綠水,紅掌撥清波

我們不難發(fā)現(xiàn),空白行變得更多了,原因是:在這個(gè)文件中,每行末尾都有一個(gè)看不見(jiàn)的換行符,而print函數(shù)在調(diào)用的時(shí)候也會(huì)產(chǎn)生一個(gè)換行符,因此每行末尾都會(huì)有兩個(gè)換行符,一個(gè)來(lái)自文件,一個(gè)來(lái)自print函數(shù)的調(diào)用,要想消除這些換行符,可在調(diào)用print函數(shù)的時(shí)候,使用rstrip():

print(line.rstrip())

處理之后的結(jié)果:

窗前明月光,疑似地上霜
舉頭望明月,低頭思?xì)w鄉(xiāng)
鵝鵝鵝,曲項(xiàng)向天歌
白毛浮綠水,紅掌撥清波

hi,python
早上好
晚上好
你好

創(chuàng)建一個(gè)包含文件各行內(nèi)容的列表

使用關(guān)鍵字 with 時(shí),open()返回的文件對(duì)象只在 with 代碼塊內(nèi)可用。如果要在 with 代碼塊外訪問(wèn)文件的內(nèi)容,可在 with 代碼塊內(nèi)將文件的各行存儲(chǔ)在一個(gè)列表中,并在 with 代碼塊外使用該列表:可以立即處理文件的各個(gè)部分,也可以推遲到程序后面再處理。

with open("123.txt",encoding='utf-8') as f:
    lines=f.readlines()#使用readlines()從文件中讀取每一行,并將其存儲(chǔ)在一個(gè)列表中
    //這樣處理后,在with代碼塊外仍然可以使用變量lines
for line  in lines:
    print(line)

輸出結(jié)果:

hi,python

早上好

晚上好

你好

使用文件中的內(nèi)容

舉例:

with open("123.txt",encoding='utf-8') as f:
    lines=f.readlines()
pi=str()#創(chuàng)建空的字符串用于存儲(chǔ)文本內(nèi)容
for line  in lines:
    pi+=line.rstrip()#將每行末尾的空行去掉
print(pi)
print(len(pi))#輸出字符串的長(zhǎng)度

1234562345671038417968539
25

注:讀取文本文件的時(shí)候,python會(huì)自動(dòng)將所有的文本文件解讀成字符串,如果文本文件中的內(nèi)容為數(shù)值,并且要作為數(shù)值使用,就必須使用int()函數(shù),或者float()函數(shù)將其進(jìn)行轉(zhuǎn)化。

舉例:

如果上述例子中的123.txt中的內(nèi)容要作為數(shù)值使用,則程序應(yīng)進(jìn)行修改:

如下:

with open("123.txt",encoding='utf-8') as f:
    lines=f.readlines()
pi=int()#進(jìn)行強(qiáng)制轉(zhuǎn)化
#pi=float()
for line  in lines:
    pi+=int(line)
    #pi+=float(line)
print(pi)

1038418326562

包含千位以上的大型文件

前面我們所分析的都是包含幾行的文本文件,現(xiàn)在假設(shè)我們有一個(gè)文件,其中包含精確到小數(shù)點(diǎn)后千位而不是30位的圓周率,也可創(chuàng)建一個(gè)字符串將他包含到里面,有的小伙伴想到這個(gè)問(wèn)題會(huì)覺(jué)得很棘手,程序該怎么寫呢?

其實(shí),我們前面編撰好的程序就可以直接進(jìn)行傳遞使用:

with open("123.txt",encoding='utf-8') as f:
    lines=f.readlines()
pi=str()#創(chuàng)建空的字符串用于存儲(chǔ)文本內(nèi)容
for line  in lines:
    pi+=line.rstrip()#將每行末尾的空行去掉
print(f"{pi[:52]}.....")#為了避免顯示的內(nèi)容不停的滾動(dòng),只打印前52位
print(len(pi))#輸出字符串的長(zhǎng)度

1234562345671038417968539168519635885951538287826636.....
1596

同理,對(duì)于萬(wàn)位,百萬(wàn)位等等更大的文件,我們的程序仍然可以使用。

圓周率中包含你的生日嗎

with open("123.txt",encoding='utf-8') as f:
    lines=f.readlines()
pi=str()#創(chuàng)建空的字符串用于存儲(chǔ)文本內(nèi)容
for line  in lines:
    pi+=line.rstrip()#將每行末尾的空行去掉
you_birthday=str(input("請(qǐng)輸入你的生日"))
if you_birthday in pi:
    print("yes")
else:
    print("NO")

請(qǐng)輸入你的生日0904
yes

寫入文件

1:寫入空文件:

要將文本寫入文件,你在調(diào)用open()時(shí),需要提供另一個(gè)參數(shù),告訴python,你要寫入打開(kāi)的文件.

舉例:

with open("123.txt",'w',encoding='utf-8') as f:
    f.write("晚上好")

打開(kāi)該文件:

#open(名稱,操作模式 )#操作模式包括:w:寫,r:讀取 ,a:附加,r+:讀寫`

如果省略了操作模式,python自動(dòng)以只讀的方式打開(kāi),如果要寫入的文件不存在,python的open()函數(shù)將自動(dòng)創(chuàng)建它,以寫入的模式(w)打開(kāi),如果該文件已存在,則python會(huì)自動(dòng)清空之前的內(nèi)容。

python只能將字符串寫入文本文件文件,要是想將數(shù)據(jù)存儲(chǔ)到文本文件中,需要先用str()將其轉(zhuǎn)化為字符串格式。

寫入多行:

函數(shù)write()不會(huì)在寫入的文本末尾添加換行符,因此如果寫入多行時(shí)沒(méi)有指定換行符,文件看起來(lái)可能不是我們想要的那樣:

舉例:

with open("123.txt",'w',encoding='utf-8') as f:
    f.write("早上好---good morning")
    f.write("中午好---good afternoon")
    f.write("晚上好---good evening")

如下圖所示,所有的內(nèi)容都被顯示在一行:

怎么解決這種問(wèn)題呢?需要在方法調(diào)用write()中包含換行符:

with open("123.txt",'w',encoding='utf-8') as f:
    f.write("早上好---good morning\n")
    f.write("中午好---good afternoon\n")
    f.write("晚上好---good evening\n")

現(xiàn)在文本內(nèi)容呈現(xiàn)在不同行中:

像顯示到終端一樣,還可以使用空格,制表符和空行來(lái)設(shè)置這些輸出的格式。

附加到文件

如果要給文件添加內(nèi)容而不是覆蓋原來(lái)的內(nèi)容,可以以附加模式打開(kāi)文件,以附加模式打開(kāi)文件時(shí),python不會(huì)在返回文件對(duì)象前清空文件的內(nèi)容,而是將寫入文件的行添加到文件末尾,如果指定的文件不存在,python會(huì)為你創(chuàng)建一個(gè)空文件。

舉例:

with open("123.txt",'a',encoding='utf-8') as f:#以附加模式打開(kāi)
    f.write("hello,world")#將hello,world寫入文件

原內(nèi)容并沒(méi)有被清空。

到此這篇關(guān)于Python常見(jiàn)文件操作的示例詳解的文章就介紹到這了,更多相關(guān)Python文件操作內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python爬取你好李煥英豆瓣短評(píng)生成詞云的示例代碼

    Python爬取你好李煥英豆瓣短評(píng)生成詞云的示例代碼

    這篇文章主要介紹了Python爬取你好李煥英豆瓣短評(píng)生成詞云,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-02-02
  • python簡(jiǎn)單批量梯度下降代碼

    python簡(jiǎn)單批量梯度下降代碼

    大家好,本篇文章主要講的是python簡(jiǎn)單批量梯度下降代碼,感興趣的同學(xué)趕快來(lái)看一看吧,對(duì)你有幫助的話記得收藏一下,方便下次瀏覽
    2022-01-01
  • Python?文件操作方法總結(jié)

    Python?文件操作方法總結(jié)

    這篇文章主要介紹了Python?文件操作方法總結(jié),文章基于python的基礎(chǔ)展開(kāi)Python?文件操作方法,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-05-05
  • Python+Selenium定位不到元素常見(jiàn)原因及解決辦法(報(bào):NoSuchElementException)

    Python+Selenium定位不到元素常見(jiàn)原因及解決辦法(報(bào):NoSuchElementException)

    這篇文章主要介紹了Python+Selenium定位不到元素常見(jiàn)原因及解決辦法(報(bào):NoSuchElementException),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • python繪圖模塊matplotlib示例詳解

    python繪圖模塊matplotlib示例詳解

    這篇文章主要介紹了python繪圖模塊matplotlib示例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • pandas數(shù)據(jù)集的端到端處理

    pandas數(shù)據(jù)集的端到端處理

    今天小編就為大家分享一篇關(guān)于pandas數(shù)據(jù)集的端到端處理,小編覺(jué)得內(nèi)容挺不錯(cuò)的,現(xiàn)在分享給大家,具有很好的參考價(jià)值,需要的朋友一起跟隨小編來(lái)看看吧
    2019-02-02
  • python3.7+anaconda 安裝opencv和dlib的問(wèn)題及解決方法

    python3.7+anaconda 安裝opencv和dlib的問(wèn)題及解決方法

    這篇文章主要介紹了python3.7+anaconda 安裝opencv和dlib的問(wèn)題及解決方法,本文圖文并茂給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • Pycharm更換python解釋器的方法

    Pycharm更換python解釋器的方法

    今天小編就為大家分享一篇Pycharm更換python解釋器的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • 10個(gè)殺手級(jí)應(yīng)用的Python自動(dòng)化腳本

    10個(gè)殺手級(jí)應(yīng)用的Python自動(dòng)化腳本

    重復(fù)的任務(wù)總是耗費(fèi)時(shí)間和枯燥的。如果逐一裁剪100張照片,或者做諸如Fetching APIs、糾正拼寫和語(yǔ)法等任務(wù),所有這些都需要大量的時(shí)間。為什么不把它們自動(dòng)化呢?本文詳細(xì)介紹了10個(gè)Python自動(dòng)化腳本,感興趣的小伙伴可以閱讀一下
    2023-03-03
  • Python庫(kù)textract提取各種文檔類型中文本數(shù)據(jù)

    Python庫(kù)textract提取各種文檔類型中文本數(shù)據(jù)

    Python的textract庫(kù)是一個(gè)強(qiáng)大的工具,它可以從各種文檔類型中提取文本數(shù)據(jù),無(wú)論是PDF、Word文檔、圖片還是其他格式的文件,textract都可以輕松地將文本提取出來(lái),本文將詳細(xì)介紹textract的功能和用法,并提供豐富的示例代碼來(lái)幫助大家深入了解
    2024-01-01

最新評(píng)論

新密市| 屏东县| 龙南县| 汽车| 洛扎县| 平顺县| 沂南县| 洪泽县| 高雄市| 天水市| 淳安县| 仲巴县| 泊头市| 三江| 勐海县| 稻城县| 视频| 隆回县| 永年县| 青岛市| 吕梁市| 大名县| 固镇县| 汶川县| 博野县| 鸡泽县| 乡宁县| 建湖县| 怀集县| 青冈县| 凤台县| 博兴县| 沙河市| 新绛县| 应用必备| 中卫市| 鄂伦春自治旗| 磐石市| 集安市| 桃园县| 河源市|