欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

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

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

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

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

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

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

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

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

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

為什么要提供文件路徑

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

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

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

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

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

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

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

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

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

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,就會(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)的方法:

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

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)

在該目錄下的文件讀取:

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è)看不見的換行符,而print函數(shù)在調(diào)用的時(shí)候也會(huì)產(chǎn)生一個(gè)換行符,因此每行末尾都會(huì)有兩個(gè)換行符,一個(gè)來自文件,一個(gè)來自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 代碼塊外訪問文件的內(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è)問題會(huì)覺得很棘手,程序該怎么寫呢?

其實(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ì)于萬位,百萬位等等更大的文件,我們的程序仍然可以使用。

圓周率中包含你的生日嗎

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,你要寫入打開的文件.

舉例:

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

打開該文件:

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

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

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

寫入多行:

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

舉例:

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)容,可以以附加模式打開文件,以附加模式打開文件時(shí),python不會(huì)在返回文件對(duì)象前清空文件的內(nèi)容,而是將寫入文件的行添加到文件末尾,如果指定的文件不存在,python會(huì)為你創(chuàng)建一個(gè)空文件。

舉例:

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)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Django利用elasticsearch(搜索引擎)實(shí)現(xiàn)搜索功能

    Django利用elasticsearch(搜索引擎)實(shí)現(xiàn)搜索功能

    這篇文章主要介紹了Django利用elasticsearch(搜索引擎)實(shí)現(xiàn)搜索功能,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-11-11
  • 用Python編寫一個(gè)簡(jiǎn)單的Lisp解釋器的教程

    用Python編寫一個(gè)簡(jiǎn)單的Lisp解釋器的教程

    這篇文章主要介紹了用Python編寫一個(gè)簡(jiǎn)單的Lisp解釋器的教程,Lisp是一種源碼簡(jiǎn)單的函數(shù)式編程語言,本文主要介紹對(duì)其中的一個(gè)子集Scheme的解釋器開發(fā),需要的朋友可以參考下
    2015-04-04
  • Python實(shí)現(xiàn)繪制多角星實(shí)例

    Python實(shí)現(xiàn)繪制多角星實(shí)例

    這篇文章要給大家分享Python實(shí)現(xiàn)繪制多角星的實(shí)例,在具備一定的Python編程基礎(chǔ)以后,我們可以結(jié)合for循環(huán)進(jìn)行多角星的編寫,只要簡(jiǎn)單的幾次循環(huán),即可以極大的解決重復(fù)編寫相同代碼方面的問題,下面小編將以三角星,五角星為例,進(jìn)而引入如何繪制多角星,需要的朋友可以參考一下
    2021-11-11
  • Python中列表與元組的乘法操作示例

    Python中列表與元組的乘法操作示例

    這篇文章主要介紹了Python中列表與元組的乘法操作,結(jié)合簡(jiǎn)單實(shí)例形式分析了Python中列表、元組的乘法,并附帶分析了字符串的乘法及元組乘法操作的注意事項(xiàng),需要的朋友可以參考下
    2018-02-02
  • 深入理解Pytorch中的torch. matmul()

    深入理解Pytorch中的torch. matmul()

    這篇文章主要介紹了Pytorch中的torch. matmul()的相關(guān)資料,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • python生成以及打開json、csv和txt文件的實(shí)例

    python生成以及打開json、csv和txt文件的實(shí)例

    今天小編就為大家分享一篇python生成以及打開json、csv和txt文件的實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Python原始套接字編程實(shí)例解析

    Python原始套接字編程實(shí)例解析

    這篇文章主要介紹了Python原始套接字編程實(shí)例解析,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-01-01
  • python的numpy模塊安裝不成功簡(jiǎn)單解決方法總結(jié)

    python的numpy模塊安裝不成功簡(jiǎn)單解決方法總結(jié)

    這篇文章主要介紹了python的numpy模塊安裝不成功簡(jiǎn)單解決方法總結(jié),分享了四種python模塊導(dǎo)入不成功的解決方法,具有一定借鑒價(jià)值,需要的朋友可以參考下。
    2017-12-12
  • python數(shù)據(jù)類型之間怎么轉(zhuǎn)換技巧分享

    python數(shù)據(jù)類型之間怎么轉(zhuǎn)換技巧分享

    在本篇文章里小編給大家分享的是關(guān)于python數(shù)據(jù)類型之間怎么轉(zhuǎn)換實(shí)例以及小技巧內(nèi)容,有興趣的朋友們參考下。
    2019-08-08
  • Python 列表排序方法reverse、sort、sorted詳解

    Python 列表排序方法reverse、sort、sorted詳解

    本文給大家介紹的是Python中列表排序方法中的reverse、sort、sorted操作方法,以及他們直接的區(qū)別介紹,有需要的小伙伴可以參考下。
    2016-01-01

最新評(píng)論