1. 程式人生 > >python 文件處理總結

python 文件處理總結

python ace 輸出結果 開頭 作文件 字節 lse gbk apc

例如讀取文件名為:poem.txt 並且字符編碼為 gbk

內容:

北國風光,千裏冰封,萬裏雪飄。
望長城內外,惟余莽莽;大河上下,頓失滔滔。
須晴日,看紅裝素裹,分外妖嬈。
江山如此多嬌,引無數英雄競折腰。
惜秦皇漢武,略輸文采;唐宗宋祖,稍遜風騷。
一代天驕,成吉思汗,只識彎弓射大雕。
俱往矣,數風流人物,還看今朝。

1.讀取文件內容

f = open(‘poem.txt‘,‘r‘,encoding = ‘gbk‘)

data = f.read()

f.close()

或者為了代碼更佳簡潔,不必調用f.close()方法:

with open(‘poem.txt‘,‘r‘,encoding = ‘gbk‘) as f:

  print(f.read())

註意:read()方法會一次性把所有內容讀取出來返回一個str,還有其他的讀取方式,例如:

read(size):每次最多讀取指定字符長度的內容,返回一個str

readlines():一次讀取文件所有內容,按行返回一個list

readline():每次只讀取一行內容

2.寫入文件

f = open(‘poem.txt‘, ‘w‘,encoding=‘gbk‘)

f.write(‘Hello‘)

f.close()

或者

with open(‘poem.txt‘, ‘w‘, encoding=‘gbk‘) as f:

  print(f.write(‘hello‘))

3. 如果想要只打印文件中某個字,例如打印“望”:

with open(‘poem.txt‘,‘r‘,encoding=‘gbk‘) as f:

  f.seek(32)

  print(f.read(1))

輸出結果:

#seek(): 把操作文件的光標移到指定位置,但是seek的長度是按字節算的,

字符編碼存每個字符所占的字節長度不一樣。例如gbk中兩個字節為一個字。

4. 如果要想刪除某些內容,例如刪除此詩的第二行:

import os
file_name = ‘poem.txt‘
new_file_name = ‘new_poem.txt‘
str = ‘山舞銀蛇,原馳蠟象,欲與天公試比高。‘

f = open(file_name,‘r‘,encoding=‘gbk‘)
f_new = open(new_file_name,‘w‘,encoding=‘gbk‘)

for i in f:
if str in i:
i = ‘‘
f_new.write(i)
else:
f_new.write(i)
f.close()
f_new.close()

os.replace(new_file_name,file_name)

#新建一個文件,把改好的內容寫入新文件,最後用新文件替換老文件

或者

poem = []
with open(‘poem.txt‘,‘r+‘,encoding=‘gbk‘) as f:
for line in f:
poem.append(line)
poem.pop(1)
f.seek(0)
f.truncate()
for i in poem:
a = i
f.write(a)

#把內容放進內存,在列表中修改後,清空原文件再寫入內容
truncate([size]):截取文件中指定字節數的內容,指定長度的話,就從文件的開頭開始截斷指定長度,其余內容刪除;
不指定長度的話,就從文件開頭開始截斷到當前位置,其余內容刪除。



5.把字符串"Luffy",將小寫字母全部轉換成大寫字母,將大寫字幕轉換成小寫字幕,然後輸出到一個文件"test.txt"中保存。
a = "Luffy"
with open(‘test.txt‘,‘w‘,encoding = ‘utf-8‘) as f:
f.write(a.swapcase())

#s.swapcase(): 方法用於對字符串的大小寫字母進行轉換


python 文件處理總結