python3--文件讀寫


讀寫模式 是否可讀 是否可寫 文件不存在時
r 報錯
r+ 是,覆蓋寫入 報錯
w 是,清空原內容 創建新文件
w+ 是,清空原內容 創建新文件
a 是,末尾追加寫入 創建新文件
a+ 是,末尾追加寫入 創建新文件

上面是python3讀寫文件的幾種模式:

前提:

1 from sys import argv
2 file_name = argv[1]
3 
4 #在cmd中執行代碼,需要輸入:
5 >>> python py_open_file.py open_file.txt
6 
7 則 argv接收到python后面的兩個參數,argv[0] 是python后的第一個參數:py_open_file.py  ; argv[1]接收的值是:open_file.txt

讀:

1 #r只讀模式
2 with open(file_name,'r') as f:
3     print(f.read())
4 
5 #r+可讀可寫
6 with open(file_name,'r+') as f:
7     f.write('r+寫入')
8     f.seek(0)    #將光標移動到文件首部
9     print(f.read())

寫:

1 #w純寫入,清空原內容
2 with open(file_name,'w') as f:
3     f.write("這是w寫入的內容")
4 #w+可讀可寫    
5 with open(file_name,'w+') as f:
6     f.write("這是w+")
7     f.flush()   #刷新內容,將寫入的內容由內存刷新到磁盤中;
8     f.seek(0)  #將光標移動到文件首部
9     print(f.read())  #讀取文件全部內容

追加寫:

 1 #a追加模式,在文件末尾追加內容,如果文件不存在,則創建
 2 with open(file_name,'a') as f:
 3     f.write("\n這是a追加寫入的內容;") 
 4 
 5 #a+可追加寫可讀模式
 6 with open(file_name,'a+') as f:
 7     f.write("\n這是a+的內容")
 8     #f.flush()
 9     f.seek(0) 
10     print(f.read())

隨機寫入文件內容示例:

1 import random
2 
3 with open(file_name,'w') as f:  
4     f.truncate()  #清空文件內容
5     for i in range(1,10):  # range生成1到9的序列
6         s_name = 'num_' + str(i)
7         s_age = random.randint(14,19)  #隨機生成范圍(14--19)的整數
8         ss = s_name + ',' + str(s_age) + '\n'
9         f.write(ss)   #循環寫入,模式可以是a,也可以是w

優化后的例子:

 1 import random
 2 
 3 with open(file_name,'w+') as f:
 4     f.truncate()
 5     for i in range(1,10):
 6         s_name = 'num_' + str(i)
 7         s_age = random.randint(14,19)
 8         ss = s_name + ',' + str(s_age) + '\n'
 9         f.write(ss)
10     f.flush()
11     f.seek(0)
12     print(f.read())

文件光標:

1 with open(file_name,'r') as f:
2     f.read()
3     print(f.tell()) #f.tell()  顯示當前光標位置
4     f.seek(0)  #移動光標到0的位置
5     f.seek(10) #移動光標到10的位置

在練習的過程中,會出現編碼報錯問題,各種嘗試,如果報錯,就嘗試修改為如下:

1 with open(file_name,'r',encoding='utf-8') as f:

有時候添加了encoding='utf-8',讀取或者寫入的時候會中文亂碼,則去掉試試。

注:

以前打開文件習慣性:

1 f = open(file_name,'w')
2 f.write("這是寫入的內容。")
3 #這種寫法需要手動關閉文件后再查看文件,才能看到內容
4 f.close()
5 
6 #而with可以自動關閉文件
7 with open(file_name,'w') as f:
8     f.write("這是寫入的內容。")


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM