溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Python3編碼怎樣實(shí)現(xiàn)文件操作

發(fā)布時(shí)間:2020-11-16 09:35:11 來源:億速云 閱讀:166 作者:小新 欄目:編程語言

這篇文章主要介紹Python3編碼怎樣實(shí)現(xiàn)文件操作,文中介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們一定要看完!

想要通過 Python 代碼操作某個(gè)文件,必須要有三個(gè)元素:

  • path:文件的路徑

  • mode:r / w / r+ / w+ / a

  • encoding:編碼方式

2. 文件句柄包括:f / file / file_handler, f_h...

3. open() 是內(nèi)置函數(shù),實(shí)際上是調(diào)用操作系統(tǒng)對(duì)文件操作的功能

4. 各系統(tǒng)的默認(rèn)編碼方式:

  • Windows:GBK

  • Linux:UTF-8

  • IOS:UTF-8

5. 對(duì)文件的任何操作都需要借助文件句柄

6. f.close():打開某個(gè)文件后一定要記得關(guān)閉它,否則會(huì)一直在內(nèi)存中占用資源

7.打開某個(gè)文件并讀取其中內(nèi)容的方法:

f = open("G:\test.txt", mode="r", encoding="utf-8")
content = f.read()
print(content)
f.close()
 
# 運(yùn)行報(bào)錯(cuò),原因解析:
# 路徑錯(cuò)誤,系統(tǒng)會(huì)認(rèn)為 \t 是一個(gè)轉(zhuǎn)義字符
# 解決辦法:
# 1) "G:\\test.txt"
# 2) r"G:\test.txt"
# 另外,這里不能把反斜杠 \ 改為斜杠 /,因?yàn)椴煌到y(tǒng)之間的斜杠與反斜杠之間會(huì)有不同的定義
 
# 使用 open() 打開某個(gè)文件報(bào)錯(cuò),除了上面提到的路徑問題
# 還有一個(gè)可能的原因,即編碼問題
# 比如在 Windows 系統(tǒng)上編寫了一個(gè) .txt 文件并保存
# 在 Pycharm 里面打開該文件就會(huì)發(fā)現(xiàn)內(nèi)容很有可能是亂碼的
# 原因就是兩者的編碼方式是不一樣的

 

8. 文件操作涉及到路徑問題,路徑分為兩種: 

  • 絕對(duì)路徑:從磁盤根目錄開始,直到找到文件

  • 相對(duì)路徑:從當(dāng)前路徑 (當(dāng)前文件夾) 找到文件

9. r 模型下的五種讀取方式

# 假設(shè) test.txt 文件與本 Python 文件在同一個(gè)目錄下
# test.txt 文件里的內(nèi)容如下:
這是第一行的內(nèi)容...
這是第二行的內(nèi)容...
這是第三行的內(nèi)容...
這是第四行的內(nèi)容...
這是第五行的內(nèi)容...
 
 
 
######## 1. read():全部讀取出來 ########
f = open("test.txt", mode="r", encoding="utf-8")
content = f.read()
print(content)
f.close()
 
# 運(yùn)行結(jié)果:
這是第一行的內(nèi)容...
這是第二行的內(nèi)容...
這是第三行的內(nèi)容...
這是第四行的內(nèi)容...
這是第五行的內(nèi)容...
 
 
 
######## 2. read(n):讀取 n 個(gè)字符 ########
f = open("test.txt", mode="r", encoding="utf-8")
content = f.read(3)
print(content)
f.close()
 
# 運(yùn)行結(jié)果:
這是第
 
 
 
######## 3. readline():按行讀取 ########
f = open("test.txt", mode="r", encoding="utf-8")
line1_content = f.readline()
print(line1_content, type(line1_content))
# 這是第一行的內(nèi)容...
# <class 'str'>
line2_content = f.readline()
print(line2_content, type(line2_content))
# 這是第二行的內(nèi)容...
# <class 'str'>
f.close()
 
 
 
######## 4. readlines():返回一個(gè)列表 ########
f = open("test.txt", mode="r", encoding="utf-8")
content = f.readlines()
print(content)
f.close()
 
# 運(yùn)行結(jié)果:
['這是第一行的內(nèi)容...\n', '這是第二行的內(nèi)容...\n', '這是第三行的內(nèi)容...\n', '這是第四行的內(nèi)容...\n', '這是第五行的內(nèi)容...\n']
 
 
 
######## 5. for 循環(huán):讀取大文件 ########
# 當(dāng)一個(gè)文件很大時(shí),比如它有 9G,但是電腦內(nèi)存只有 8G
# 如果使用上面的方法一次性全部讀取出來,那么電腦就會(huì)掛掉
# 解決辦法就是使用 for 循環(huán),只有每次循環(huán)時(shí)才占內(nèi)存
f = open("test.txt", mode="r", encoding="utf-8")
for line in f:
    print(line.strip())
f.close()
 
# 運(yùn)行結(jié)果:
這是第一行的內(nèi)容...
這是第二行的內(nèi)容...
這是第三行的內(nèi)容...
這是第四行的內(nèi)容...
這是第五行的內(nèi)容...
 
# 如果是直接 print(line),注意看結(jié)果:
這是第一行的內(nèi)容...
 
這是第二行的內(nèi)容...
 
這是第三行的內(nèi)容...
 
這是第四行的內(nèi)容...
 
這是第五行的內(nèi)容...

以上是Python3編碼怎樣實(shí)現(xiàn)文件操作的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對(duì)大家有幫助,更多相關(guān)知識(shí),歡迎關(guān)注億速云行業(yè)資訊頻道!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI