python中的檔案操作

2022-03-17 02:44:48 字數 1902 閱讀 2098

檔案操作時,python首先會拿到檔案的控制代碼;

f=open('filename','w',encoding='utf8')  #寫模式開啟檔案,拿到檔案控制代碼;f為檔案控制代碼

f=f.read() # 讀檔案內容

f.close() # 關閉檔案,務必要關閉

檔案開啟模式:

寫的時候,游標永遠都在最後;

r 讀模式,唯讀,不可寫;

w 寫模式,當檔案寫模式時,就會把原來的資料格式化,然後從0位置開始寫;不可讀

r+ 讀寫模式,類似a模式

w+ 寫讀模式,也是先清空,然後寫,和w模式的區別是可讀。

a+ 和a模式的區別的可讀。預設游標位置是最後

x create a new file and open it for writing

b 二進位制模式

t text模式(default)

+ open a disk file for updating(reading and writing)

u universal newline mode(deprecated)

檔案按行讀:

f=open('filename','w',encoding='utf8') 

f=f.readline() #從第一行開始讀,每執行一次readline就往下移動一行;python中,read到哪個位置,游標就移動到了那裡;再讀就從游標往後讀;

f.readlines() #會把全文變成列表;每行是乙個元素;

for i in f.readlines():

print(i.strip())

#最好不要這樣,因為如果檔案很大,f.readlines會全部讀取到記憶體,會搞死記憶體;可以這樣:

for i in f:

print(i.strip())

# 這裡的for迴圈會 自動把 f做成乙個迭代器,每迴圈一次,從f檔案中取一次;

f.tell()     告訴我游標當前所在的位置。字元和當前字元編碼有關。 f.seek(0)    游標回到0位置 f.truncate()   截斷,需要在檔案為a模式才有意義

由於磁碟儲存機制,直接修改實現不了。只能先生成副本,然後想法刪除舊檔案,把新副本名字改回去。

f_read=open('小重山','r',encoding='utf8')

f_write = open('小重山2','w',encoding='utf8')

number=0

for line in f_read:

number+=1

if number==5:

line=''.join([line.strip(),'alex\n'])

# line='hello 岳飛\n'

f_write.write(line)

f_read.close()

f_write.close()

因為檔案中只能儲存字串,所以假如有字典要儲存在檔案中,需要先將字典轉換為字串;用的時候需要使用eval轉換回預設型別;如:

a=}    #a為乙個字典

a=str(a) #強轉為字串 '}'

#這樣等把a從檔案中取出來時,還是字串,不能使用字典的方法。要轉回字典:

a=eval(a)

如果開啟乙個檔案,忘記關閉了,怎麼辦?with方法可以解決。

f=open('log','r')     

# 等效於

with open('log','r') as f:

並且with中,可以同時開啟兩個檔案,拿到兩個檔案控制代碼:

with open('log1','r') as f1,open('log2','w') as f2:

python中的 檔案 操作

myread open index.txt r 開啟乙個檔案 mywite open aaa.txt w 複製到另乙個檔案 mystr myread.read 1024 while len mystr 0 遍歷檔案內容 mywite.write mystr mystr myread.read 102...

python中的檔案操作

檔案操作 open 檔名 操作 encoding 編碼格式 read 內容多少 open操作必須加上檔案的路徑,而當檔案與.py檔案在相同目錄下則可以只寫上檔名 r 表示可讀 read 預設表示就是將所有的東西全部取出 w 表示寫 write 寫模式預設表示將以前的東西覆蓋掉 讀模式只能夠讀,寫模式...

Python中的檔案操作

1開啟乙個檔案 f open r c users administrator desktop 123.txt r 2關閉檔案 f.close 引數說明 第乙個r的解釋說明 因為在python和很多程式語言中 轉義符號,要想輸出 要麼多加乙個 寫成 要麼在字串前面加r,告訴python直譯器,按原始字...