python沒儲存怎麼辦 Python檔案處理

2021-10-11 09:46:02 字數 3947 閱讀 9879

python檔案處理

開啟乙個檔案,開啟的方式就是檔案處理。

應用程式不可以直接操作硬體。需要通過os(作業系統)來操作硬體。

python開啟檔案的格式:

三要素:

open('檔案的絕對路徑','你要讀寫還是追加','選擇字元編碼的型別')

open ('c:\users\asus\desktop\使用者.txt','r',encoding='utf-8')

把絕對路徑貼上過來的時候,他的顏色會不對,因為\f之類的是轉譯符。這樣開啟檔案就會。有問題。

對於windows來說,windows10的字元編碼是gbk。所以,用什麼字元編碼寫的,就要用什麼字元編碼來讀。

f = open('c:\users\a us\sdesktop\使用者.txt','r',encoding='utf-8')#f就相當於你操作的這一串東西的控制代碼。以後要想改變你操作的這一串東西,直接對f操作即可。

data =f.read()print(data)

f.close()#讀完一定要關閉,close做的第一件事是告訴作業系統,我已經讀完了這個檔案,你幫我去關閉掉,第二件事是**f這個變數。

如果直接執行會報錯,報語法錯誤,此時有三種解決方案:

第一種:對』\』再進行轉譯

open ('c:\\users\\asus\\desktop\\使用者.txt','r',encoding='utf-8')

第二種:

open ('c:/users/asus/desktop/使用者.txt','r',encoding='utf-8')

第三種:

open (r'c:\users\asus\desktop\使用者.txt','r',encoding='utf-8')

讀檔案:

f = open(r'c:\users\fengzi\desktop\a.txt','r',encoding='utf-8')

f.read(4)#4是字元不是位元組

data = f.read()#讀取游標右邊所有字元

print(data)

f.close()

bytes(位元組):8位1bytes,1024bytes是1kb。

字元:乙個字母就是乙個字元。乙個漢字也是乙個字元。包括空格。

游標:f = open(r'c:\users\fengzi\desktop\a.txt','r',encoding='utf-8')

f.read(4)

data= f.read()#讀取游標右邊所有的字元

f.close()#當你進行了第一次讀取,游標的位置發生了變化,現在游標處於第四位元組,當在進行讀取,如果不指定引數,會讀取第四個位元組往後的全部內容,不包括第四個字元。

f = open(r'c:\users\fengzi\desktop\a.txt','r',encoding='utf-8')

f.read()

data= f.read()#讀取游標右邊所有字元

print(data)

f.close()#這樣再去讀就沒有內容,因為第一次的讀取已經將游標移動到了最後,當你再進行讀取,游標後面是沒有內容的。f = open(r'c:\users\fengzi\desktop\a.txt','r',encoding='utf-8')

data = f.readline(2)#這裡面的數字表示讀取此行的前兩個字元。

print(data)

f.close()#這是按行去讀,預設是讀一行內容。

如何按行都讀取出來:

for i inf:print(f)

寫的方法:

f = open(r'c:\users\fengzi\desktop\a.txt','w',encoding='utf-8') #此方法只能寫字串

f.write(』哈哈哈,哈哈哈』)這樣的寫是會覆蓋原有內容。

f.close()

f= open(r'c:\users\fengzi\desktop\a.txt','w',encoding='utf-8')

f.writelines([』你』,』好』,』美』]) 或 ((』你』,』好』,』美』))把列表或元組所有元素拼接成字串,拼接成一行,寫入檔案中。但會覆蓋原有內容。

f.close()

寫的方法不覆蓋:

f = open(r'c:\users\fengzi\desktop\a.txt','a',encoding='utf-8')

f.write(』哈哈哈,哈哈哈』)

f.close()

也可以寫入列表

f.writelines([』sb』,』cvcv』,』sds』])

儲存檔案:

f.flush()

判斷檔案是否是可讀的:

f.readable()

判斷檔案是否是可寫的:

f.writable()

bytes型別檔案操(漢字在windows10中佔2個位元組)

以bytes方式對檔案進行讀取:

f = open(r'c:\users\fengzi\desktop\a.txt',』rb』)print(f.read())

f.close

解碼:這樣讀取出來的是二進位制,如果想轉成可讀的內容。再進行解碼。

f = open(r'c:\users\fengzi\desktop\a.txt',』rb』)print(f.read().decode(『utf-8』))

f.close

轉碼:a = '你好'.encode('utf-8')

bytes型別檔案寫:

第一種方法:

必須要轉換成二進位制才能寫進去。

f= open(r'c:\users\fengzi\desktop\a.txt',』wb』)

f.write(『你好』.encode(『utf-8』))

f.close

第二種方法:

f = open(r'c:\users\fengzi\desktop\a.txt',』wb』)

f.write(b』asd』)

f.close

這種的只能寫26個字母或數字,漢字轉不進去,因為ascii表,它只認26個英文本母。

檔案的游標移動

這種是不需要手動關閉的書寫格式

with open(r'c:\users\fengzi\desktop\a.txt',』r』,encoding=』utf-8』) as f

游標分為三種模式:

首先我們要知道的是當我們使用read讀完乙個檔案的時候,他的游標是處於最後的。

第一種0模式:可以用於bytes型別和字元型別

with open(r'c:\users\fengzi\desktop\a.txt',』r』,encoding=』utf-8』) as f:

f.seek(0,0)

這種模式會把游標移動在最頭

第二種1模式:此模式只適用於bytes型別

f.read(1)

f.seek(1,1)

1代表相對位置,就是讀了乙個字元的當前位置,而後再往右移乙個游標。

第三種2模式:此模式只適用於bytes型別

f.read(1)

f.seek(2)

2代表游標移動到最後。

常用漢字在utf-8中佔3個位元組。生僻字佔得更多。

持續重新整理檔案,等同於tail –f

監測端:

#tail -f /var/log/message | grep '404'

importtime

with open(r'c:\users\fengzi\desktop\a.txt', 'r', encoding='utf-8') as f:whiletrue:

data=f.readline()if '404' indata:print(data)else:

time.sleep(0.05)

寫入端:

open(r'c:\users\fengzi\desktop\a.txt', 'a', encoding='utf-8') as f:

f.write('qwewq4304aaa')

怎麼辦,怎麼辦?

我在一家軟體公司做程式設計師,也有一年多,我是做.net方向的,公司活還可以,就是工資給的少。本來想在工作半年的時候提出加薪的要求,可事事難料啊?就在我剛要開口的時候公司發生了變動。收購 我公司被乙個集團收購了,在收購的這段期間我們公司真是損兵折將啊,走了一大批人,其中包括我們原來的專案經理。這樣一...

mysql 怎麼辦 mysql 密碼忘記怎麼辦

一 若資料庫是初次登陸 linux系統給資料庫生成了乙個原始密碼在檔案 var log mysqld.log中 grep temporary password var log mysqld.log 找到原始密碼 登陸 mysql uroot p 你找到的密碼 mysql set global val...

小財魚 閒魚沒流量沒諮詢沒訂單怎麼辦?做好這些細節

閒魚公升級後的頁面又讓人熱愛了幾分,產品多了乙個 量的專案,並且點開我發布的,可以看到每日的 彙總,部分ios使用者目前雖然版本達到最新,但是該功能還未展示,記不得,慢慢等待吧,但是安卓的該功能已經完善,一起看一下我的ios系統的閒魚介面吧,對了,本次公升級最令人開心的就是擦亮不需要扣除閒魚幣了。小...