亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

帶你一文搞懂Python文件的讀寫操作

 更新時間:2023年05月16日 09:50:42   作者:江帥帥  
讀寫文件是最常見的IO操作,Python內(nèi)置了讀寫文件的函數(shù),下面這篇文章主要給大家介紹了關(guān)于Python文件讀寫操作的相關(guān)資料,文中通過實例代碼介紹的非常詳細,需要的朋友可以參考下

一、Python 文件讀寫概述

Python 在文件讀寫操作中,會使用「內(nèi)置函數(shù)」和「Pandas 庫」兩種方式。

先來看內(nèi)置函數(shù),包括 open()、read()、readline()、readlines()、write()、writelines()、close() 等方法,也是接下來給大家詳細介紹的內(nèi)容。

再看 Pandas 庫,包括 read_csv()、to_csv()、read_excel()、to_excel()、read_json()、to_json() 等方法,我們后面講到 Pandas 庫的時候,再詳細講講。

在使用「內(nèi)置函數(shù)」的時候,思路基本上是:

1、打開文件

2、開始「讀」或者「寫」的操作

3、關(guān)閉文件

二、使用 open() 打開文件

Python 使用 open() 方法,可以根據(jù)指定文件名或標識符來打開文件。

語法格式:

file = open('filename.txt', mode = 'r')

獲取到的 file 是一個文件對象。

Python 文件的打開模式,有如下幾種,且可以組合使用:

模式描述
‘r’以「只讀」模式打開文件,如果指定文件不存在,則會報錯,默認情況下文件指針指向文件開頭
‘w’以「只寫」模式打開文件,如果文件不存在,則根據(jù) filename 創(chuàng)建相應(yīng)的文件,如果文件已存在,則會覆蓋原文件
‘a’以「追加」模式打開文件,如果文件已存在,文件指針會指向文件尾部,將內(nèi)容追加在原文件后面,如果文件不存在,則會新建文件且寫入內(nèi)容
‘t’以「文本文件」模式打開文件
‘b’以「二進制」模式打開文件,主要用于打開圖片、音頻等非文本文件
‘+’打開文件并允許更新(可讀可寫),也就是說,使用參數(shù) w+、a+ 也是可以讀入文件的,在使用的時候,需要注意區(qū)別

再告訴你一個秘密,我們在操作文件的時候,因為內(nèi)容很多,所以我們前面學到的「循環(huán)」終于可以大派用場了,比如「for 循環(huán)」就會經(jīng)常被使用到。

案例代碼:

第一步,新建 hello.txt 文件,如下:

當你慢慢調(diào)整了自己看待問題的角度,
也提升了思考的深度,你竟然會發(fā)現(xiàn),
你所處在的「超一線城市」其實是一個「場」。
在這個場域里頭,你可以遇見無限的可能性,
每一個維度都暗含大藍海,都有大把的機會,
你甚至運氣爆棚,在某次從天而降的大機遇中,
能迅速成長為自己可能完全沒法想象的人。

第二步,使用 for 循環(huán)讀取文件,如下:

# 打開 hello.txt 文件,指定「只讀模式」
hello = open('hello.txt', 'r')

# 使用 for 循環(huán),將讀到的內(nèi)容,打印出來
num = 1
for con in hello:
    print('第 %d 行:' % num, con)
    num += 1

# 最后需要將文件關(guān)閉
hello.close()

第三步,改良,使用 read() 方法讀取

# 打開 hello.txt 文件,指定「只讀模式」
hello = open('hello.txt', 'r')

# 使用 read()
con = hello.read()

# 打印
print(con)

# 最后需要將文件關(guān)閉
hello.close()

拓展:

如果,我將上面的第二步和第三步,放在同一個文件中寫,就會出現(xiàn)「文本文件指針復(fù)位」的問題。

因為我們通過 for 循環(huán),已經(jīng)讓「文本文件指針」從文件的開頭讀到文本末尾,已經(jīng)把所有內(nèi)容讀取,此時指針在文末位置。

如果說,再讓程序執(zhí)行 read() 方法,則會發(fā)現(xiàn)后面已經(jīng)沒有內(nèi)容可讀了,所以程序執(zhí)行后,不會輸出任何內(nèi)容。

解決辦法,調(diào)用 seek() 方法,指定偏移量為 0,來將文本文件指針「復(fù)位」即可。

你還可以通過 tell() 方法,獲取文件指針的當前位置。如果此時文件指針在文末位置,獲取到的其實就是整個文本的字節(jié)數(shù),也相當是這個文件的大小了。

# 打開 hello.txt 文件,指定「只讀模式」
hello = open('hello.txt', 'r')

# 使用 for 循環(huán),將讀到的內(nèi)容,打印出來
num = 1
for con in hello:
    print('第 %d 行:' % num, con)
    num += 1

# 獲取文件指針的位置
print(hello.tell())
    
# 將文本文件的指針,復(fù)位
hello.seek(0)

# 使用 read()
con = hello.read()
print("---- 使用 read() -----")

print(con)

# 最后需要將文件關(guān)閉
hello.close()

三、使用 read()、readline()、readlines() 讀取數(shù)據(jù)

當文件很大的時候,單純使用 read() 方法就很難一次性讀入內(nèi)存中。

可以使用 readline() 方法,從文中讀取整行信息。

案例代碼:

# 打開 hello.txt 文件,指定「只讀模式」
hello = open('hello.txt', 'r')

# 使用 readline(),讀取一行信息
con = hello.readline()
print(con)

# 最后需要將文件關(guān)閉
hello.close()

但如果想讀取所有行的信息,就需要使用 readlines() 方法了

readlines() 和 read() 的區(qū)別,在于讀取的「顆粒大小」,前者顆粒較大以行為單位,后者顆粒較小以字節(jié)為單位。

案例代碼:

try:
    # 打開 hello.txt 文件,指定「只讀模式」
    hello = open('helo.txt', 'r')

    # 使用 readlines(),讀取全部信息
    con = hello.readlines()
    print(con)

finally:
    print('出問題了')
    # 最后需要將文件關(guān)閉
    hello.close()

另外,提醒一下,讀寫文件的時候,經(jīng)常會出現(xiàn)一些 IOError 錯誤異常,建議寫在 try…finally… 異常捕獲塊中,養(yǎng)成良好的編碼習慣。

比如,我們經(jīng)常執(zhí)行到最后,會忘記關(guān)閉文件,這就很可能會帶來很多潛在的問題,可以在 finally 中,也就是程序最后會執(zhí)行的部分,去關(guān)閉我們已打開的文件。

案例代碼:

try:
    # 打開 hello.txt 文件,指定「只讀模式」
    hello = open('helo.txt', 'r')

    # 使用 readlines(),讀取全部信息
    con = hello.readlines()
    print(con)

finally:
    print('出問題了')
    # 最后需要將文件關(guān)閉
    hello.close()

四、使用 write()、writelines() 寫入文件

還有一種更好玩兒,可以用 with…as… 語句,它天生用來防止我們忘記關(guān)閉文件。

當你引入 with 語句,它會在你訪問完文件之后,根據(jù)上下文自動調(diào)用 close() 方法來關(guān)閉。

語法格式:

with expression as target :
    statements

案例代碼:

with open('hello.txt') as hello :
    hello.write("I Love You")

在上面的代碼中,我們在打開文件的時候,指定了 ‘w’ 模式,啟動了寫的操作。而且還使用了一個 write() 方法,它是用來向文件中寫入指定字符串的。

在代碼中操作的字符串內(nèi)容,主要存儲在緩沖區(qū),我們在文件關(guān)閉前或緩沖區(qū)刷新前,可以將它寫入文件。

最后,用一下 writelines() 方法,將列表中的三行數(shù)據(jù),寫到文件中。

案例代碼:

# 創(chuàng)建一個列表
txtlist = ['Python 私教\n', 'Java 私教\n', 'C++ 私教\n']

# 寫入文件
with open('hello.txt') as hello :
    hello.writelines(txtlist)

補充:文件迭代器

Python可是大名鼎鼎的Python,不來點niubility的操作那還叫Python嗎?

Python中,文件對象是可迭代的,意味著可以直接在for循環(huán)中使用文件對象,從而進行迭代文件的內(nèi)容。下面兩個demo都是行得通的:

f = open(filename)
for line in f:
    #文件操作
f.close()
1
2
3
4
for line in open(filename):
    #文件操作

最后

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

相關(guān)文章

  • python使用str & repr轉(zhuǎn)換字符串

    python使用str & repr轉(zhuǎn)換字符串

    str() 是將 數(shù)值 轉(zhuǎn)成字符串 repr() 是將一個對象 轉(zhuǎn)成字符串 顯示 看明白了么:str()是將一個對象轉(zhuǎn)化成str對象 repr()是將一個對象可視化,使用字符串輸出,使編程人員看到其的內(nèi)部結(jié)構(gòu)
    2016-10-10
  • python實現(xiàn)打印類的所有屬性和方法

    python實現(xiàn)打印類的所有屬性和方法

    這篇文章主要介紹了python實現(xiàn)打印類的所有屬性和方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Django ContentType組件詳解

    Django ContentType組件詳解

    這篇文章主要為大家介紹了Django ContentType組件,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2021-12-12
  • 基于梯度爆炸的解決方法:clip gradient

    基于梯度爆炸的解決方法:clip gradient

    今天小編就為大家分享一篇基于梯度爆炸的解決方法:clip gradient,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • 用python對oracle進行簡單性能測試

    用python對oracle進行簡單性能測試

    這篇文章主要介紹了用python對oracle進行簡單性能測試的示例,幫助大家更好的理解和使用python,感興趣的朋友可以了解下
    2020-12-12
  • 對Django中內(nèi)置的User模型實例詳解

    對Django中內(nèi)置的User模型實例詳解

    今天小編就為大家分享一篇對Django中內(nèi)置的User模型實例詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-08-08
  • pytorch實現(xiàn)線性回歸

    pytorch實現(xiàn)線性回歸

    這篇文章主要為大家詳細介紹了pytorch實現(xiàn)線性回歸,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-04-04
  • Django 多語言教程的實現(xiàn)(i18n)

    Django 多語言教程的實現(xiàn)(i18n)

    這篇文章主要介紹了Django 多語言教程的實現(xiàn)(i18n),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-07-07
  • Python?encode()方法和decode()方法詳解

    Python?encode()方法和decode()方法詳解

    encode() 方法為字符串類型(str)提供的方法,用于將 str 類型轉(zhuǎn)換成 bytes 類型,這個過程也稱為“編碼”,這篇文章主要介紹了Python?encode()方法和decode()方法,需要的朋友可以參考下
    2022-12-12
  • pytorch實現(xiàn)對輸入超過三通道的數(shù)據(jù)進行訓(xùn)練

    pytorch實現(xiàn)對輸入超過三通道的數(shù)據(jù)進行訓(xùn)練

    今天小編就為大家分享一篇pytorch實現(xiàn)對輸入超過三通道的數(shù)據(jù)進行訓(xùn)練,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01

最新評論