日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python 文件处理软件_Python —— 文件处理

發(fā)布時間:2023/12/19 python 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python 文件处理软件_Python —— 文件处理 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

1、文件操作分為讀、寫、修改

兩種方式讀寫文件:

方法1:

1 f = open(file = '路徑', mode = 'r', encoding = 'utf-8')2 data =f.read()3 f.close()

方法2:

1 with open(‘路徑’,‘r’,encoding = 'utf-8') as f:2 f.read()

2、以什么方式存的文件,就要用什么方式打開,必須指定,否則會出現(xiàn)編碼錯誤,所以在open里面要寫上encoding

3、路徑

相對路徑

絕對路徑

4、二進(jìn)制模式

在不知道文件使用什么編碼的情況下,要打開文件,可以使用二進(jìn)制模式打開:

1 f = open(file = '路徑', mode = 'rb')2 data = f.read() #f.read(1) 讀1個字符

3 print(data)4 f.close()

5、智能檢測編碼工具:

要判斷文件到底使用哪種方式編碼的(一般就是utf-8、Unicode、gbk)

需要使用第三方模塊:?chardet,?根據(jù)編碼的規(guī)律(不同編碼的字節(jié))

#-*- coding:utf -8-*-

importchardet

f= open('hello', 'rb')

data=f.read()

f.close()

result=chardet.detect(data)print(result)

out:

{'encoding': 'IBM855', 'confidence': 0.20479192628309825, 'language': 'Russian'}

安裝方法:pip

打開終端,輸入pip install?chardet? (要在pip已經(jīng)成功安裝在電腦上才行)

編碼和解碼:

編碼?encode? 使用一個編碼方式進(jìn)行編碼或者打開

unicode ----> encode?編碼 -----> gbk\ utf-8? 當(dāng)內(nèi)存里的數(shù)據(jù)要存儲或者傳輸?shù)臅r候用utf-8?保存

解碼?decode

utf- 8? ----> decode?解碼 ---->? unicode? ?當(dāng)硬盤的數(shù)據(jù)加載到內(nèi)存中讀取的時候,使用Unicode?讀取

6、寫模式操作文件 w\ wb

如果文件很大,在不占內(nèi)存的情況下,處理完文件,可以進(jìn)行邊讀邊處理,把整個文件每次讀一點,循環(huán)讀完整個文件

# 循環(huán)語句讀文件

f = open('file','r')for line inf:print(line) # print會自動換行,所以打印出來會空一行打印

print?具有打印完后,自動換行的功能

寫文件:

f = open('younggirl', 'w', encoding='utf-8') # 使用w ,會自動創(chuàng)建這個文件#文件編碼是utf-8 ,加載到內(nèi)存后,是自動轉(zhuǎn)換成Unicode 讀取

f.write('today is monday')

f.write('tomorrow is tuesday') # write 是不會自己換行的

f.close()

創(chuàng)建一個二進(jìn)制的文件,寫內(nèi)容的時候?要標(biāo)志編碼類型,才能順利寫入:

7、追加模式?a \ ab :把文件追加到文件尾部:

1 f = open('file', mode = 'a', encoding = 'gbk')

8、文件讀、寫混合模式(r+):先讀后寫

f = open(file='hello1', mode='r+', encoding='gbk')print(f1.read())

f.write('\nahhahah')

f.write('\n111111')print(f.read())

f1.close()

只會打印第一個print,因為先讀 后寫,寫完之后,文件中的光標(biāo)已經(jīng)在最后一個,再讀的話,已經(jīng)沒有內(nèi)容可讀了

9、文件寫、讀模式(w+):先清空,后寫入內(nèi)容

10、文件處理的其他功能:

fileno:

返回文件句柄在內(nèi)核中的索引值,以后做IO多路復(fù)用時可以用到

flush:

把文件從內(nèi)存buffer里強(qiáng)制刷新到硬盤

在內(nèi)存里寫入文件的時候,沒有真正的寫到文件中,只有close,才會存入

當(dāng)內(nèi)存的buffer滿了之后,才會自動刷到硬盤

如果要強(qiáng)制刷入硬盤,可以中間用flush

readable:

判斷是否可讀

在Linux中,一切皆文件(連一個安裝包、視頻、終端都是文件)所以要判斷文件是否可讀才能正常讀取

當(dāng)文件是w模式的時候,是不能讀取文件的

readline:

只讀一行內(nèi)容,遇到\n 、 \r?結(jié)束讀取

\r前面的字符不打印,后面的才打印

\n打印前面的字符

seek:

把操作文件的光標(biāo)移動到指定位置

f.seek(10):?長度是按照字節(jié)算的,但是不同的字符編碼所占用的字節(jié)長度是不一樣的,當(dāng)不知道字符編碼的時候,錯用seek,會出現(xiàn)亂碼

f = open('blue', 'r+', encoding='utf-8')

f.seek(15)

f.write('aaa')

f.close()

seekable:判斷是否可移動

tell:

讀取當(dāng)前光標(biāo)的位置(字節(jié)的長度)

truncate:

按指定長度截斷文件,從當(dāng)前位置往后面刪除

1 f = open('blue', 'r+', encoding='utf-8')2 f.truncate(20)3 f.close()

11、修改文件

使用seek,把光標(biāo)移動到文件的中間

f = open('blue', 'r+', encoding='utf-8')

f.seek(6)

f.write('用seek插入字符')

f.close()

以上問題: 把有一些內(nèi)容被替換掉了,沒有直接插入,

還有可能會出現(xiàn)亂碼(輸入字節(jié)3個的話,剩下的多了一個出來,就亂碼了) 這個和存儲原理導(dǎo)致的

解決方法:

方法1:?占硬盤方式的文件修改代碼

要邊讀邊修改,寫到新的文件里

f = 'blue'f_new= '{}.new'.format(f)

old_str= 'how'new_str= 'how222.how'file= open(f, 'r', encoding='utf-8')

file_new= open(f_new, 'w', encoding='utf-8')for line infile:if old_str inline:

new_line=line.replace(old_str, new_str)else:

new_line=line

file_new.write(new_line)

file.close()

file_new.close()

方法2:若想覆蓋原先的文件

上面的代碼是生成了一個新的文件,如果想要覆蓋,需要使用第三方模塊

importos#以下代碼可上面一樣

f = 'blue'f_new = '{}.new'.format(f)

old_str = 'how'new_str = 'how222.how'file = open(f, 'r', encoding='utf-8')

file_new = open(f_new, 'w', encoding='utf-8')

for line infile:

if old_str inline:

new_line =line.replace(old_str, new_str)

else:

new_line =line

file_new.write(new_line)

file.close()

file_new.close()

os.rename(file_new, file)

# 新文件名字改成原先的名字

# Windows 的方法有點不一樣 os.replace

# 幫助文檔說明replace會覆蓋原文件

總結(jié)

以上是生活随笔為你收集整理的python 文件处理软件_Python —— 文件处理的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。