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

Python常見文件操作的示例詳解

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

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

1:讀取整個文件

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

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

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

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

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

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

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

為什么要提供文件路徑

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

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

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

那么該怎么解決這個問題呢?

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

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

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

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

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

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

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

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

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

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

如果在文件路徑中直接使用反斜杠,將引發(fā)錯誤,因為反斜杠用于對字符串中的字符進行轉(zhuǎn)義。

舉例:

C:\path\to\file.txt

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

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

逐行讀取

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

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

在該目錄下的文件讀取:

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

計算機其他位置中的:

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()

計算機其他位置中的:

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)

計算機其他位置中的:

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

運行上面兩個文件的結(jié)果:

hi,python

早上好

晚上好

你好

窗前明月光,疑似地上霜

舉頭望明月,低頭思歸鄉(xiāng)

鵝鵝鵝,曲項向天歌

白毛浮綠水,紅掌撥清波

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

print(line.rstrip())

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

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

hi,python
早上好
晚上好
你好

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

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

with open("123.txt",encoding='utf-8') as f:
    lines=f.readlines()#使用readlines()從文件中讀取每一行,并將其存儲在一個列表中
    //這樣處理后,在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)建空的字符串用于存儲文本內(nèi)容
for line  in lines:
    pi+=line.rstrip()#將每行末尾的空行去掉
print(pi)
print(len(pi))#輸出字符串的長度

1234562345671038417968539
25

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

舉例:

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

如下:

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

1038418326562

包含千位以上的大型文件

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

其實,我們前面編撰好的程序就可以直接進行傳遞使用:

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

1234562345671038417968539168519635885951538287826636.....
1596

同理,對于萬位,百萬位等等更大的文件,我們的程序仍然可以使用。

圓周率中包含你的生日嗎

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

請輸入你的生日0904
yes

寫入文件

1:寫入空文件:

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

舉例:

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

打開該文件:

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

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

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

寫入多行:

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

舉例:

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

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

怎么解決這種問題呢?需要在方法調(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)在不同行中:

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

附加到文件

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

舉例:

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

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

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

相關(guān)文章

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

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

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

    python簡單批量梯度下降代碼

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

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

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

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

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

    python繪圖模塊matplotlib示例詳解

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

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

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

    python3.7+anaconda 安裝opencv和dlib的問題及解決方法

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

    Pycharm更換python解釋器的方法

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

    10個殺手級應(yīng)用的Python自動化腳本

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

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

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

最新評論

邵东县| 米脂县| 买车| 迁西县| 安溪县| 怀集县| 石棉县| 大埔县| 东安县| 原阳县| 衡阳县| 东平县| 奉新县| 土默特右旗| 壤塘县| 长垣县| 太湖县| 泰顺县| 静乐县| 潞城市| 宜黄县| 睢宁县| 江城| 涡阳县| 威海市| 塔河县| 祁门县| 武冈市| 建德市| 祥云县| 宜春市| 大兴区| 邛崃市| 峨边| 桑植县| 肥西县| 中宁县| 文登市| 精河县| 襄樊市| 波密县|