Ⅰ python3 文件讀寫 注意什麼
open()函數返回一個File對象,並且最常用的用法是使用兩個參數,open(filename,mode)
第一個參數是文件名,第二個參數表示文件的打開方式。只讀方式打開可以使用'r',寫文件可以使用'w'(這個選項會把當前文件夾中存在同名文件時將該文件擦除),'a'可以用來追加內容,任何內容都會被寫入文件的末尾。'r+'會同時讀寫。mode參數是可選參數,如果沒有的話,默認是'r'。
一般情況下,文件都是用文本模式打開的,也就意味著,文件讀寫都是使用某種編碼的,末日呢情況下都是用utf-8編碼。'b'會用二進制形式打開文件。這個時候,文件讀寫都是以位元組的形式。
在文本模式下,默認會把平台相關的換行符(windows平台是\r\n,Linux平台是\n)轉換成\n,在寫文件時,會把\n轉換成平台相關的字元寫入。這種後台的操作對於文本會非常有用,但是對於二進制文件如jpeg或exe文件,則會破壞文件,因此在打開這類文件時千萬要使用二進制模式打開。
Ⅱ python讀寫有中文的文件時,是否需要設置編碼格式
需要:
with open("路徑","模式",encoding="utf8") as f:
如果不確定編碼格式,後面讀取可能會出問題
Ⅲ python的編寫格式
讀取鍵盤輸入【raw_input( )或者input( )】
>>> demo = raw_input('INPUT:'); \ # \是在CMD中的換行符
... print "content is" , demo
INPUT:HELL0 MOMO
content is HELL0 MOMO
打開或關閉文件,這里要用Python的內置函數open( ),然後創建一個file對象。
Python打開文件的模式:
r 以只讀模式打開文件。
w 以只寫模式打開文件,且先把文件內容清空(truncate the file first)wb 以二進制格式打開一個文件只用於寫入。如果該文件已存在則將其覆蓋。如果該文件不存在,創建新文件。
a 以添加模式打開文件,寫文件的時候總是寫到文件末尾,用seek也無用。打開的文件也是不能讀的。
r+ 以讀寫方式打開文件,文件可讀可寫,可寫到文件的任何位置。
w+ 和r+不同的是,它會truncate the file first。
a+ 和r+不同的是,它只能寫到文件末尾。
一個文件被打開後,有一個file對象,可以得到有關該文件的各種信息,以下是一些使用方法:
file.closed 返回true如果文件已被關閉,否則返回false。
file.mode 返回被打開文件的訪問模式。
file.name 返迴文件的名稱。
file.softspace 如果用print輸出後,必須跟一個空格符,則返回false。否則返回true。
舉個例子
>>> demo = open("MOMO.txt","wb")
>>> print u'是否關閉:', demo.closed
是否關閉:False
>>> print u'訪問模式:',demo.mode
訪問模式: wb
>>> print u'文件名稱:',demo.name
文件名稱:MOMO.txt
>>> print u'末尾是否加空格:',demo.softspace
末尾是否加空格:0
Ⅳ python對文件的獨操作有哪幾種請詳細說明每種方法
1.打開文件:
f=open(r'E:\PythonProjects\test7\a.txt',mode='rt',encoding='utf-8')
以上三個單引號內分別表示:要打開的文件的路徑,mode為文件打開方式具體介紹在下文,encoding為文件的字元編碼,一般默認為utf-8
2.讀寫文件:
data=f.read() # 讀文件
f.write() # 寫文件
3.關閉文件:
f.close()
4.為了簡便,一般採用上下文的方法進行文件操作,可不用關閉文件
with open('a.txt',mode='rt',encoding='utf-8') as f:
data=f.read()
print(data)
with open('a.txt',mode='wt',encoding='utf-8') as f:
f.write('hello world')
5.控制文件讀寫的操作:
r:(默認模式):只讀:以該模式打開文件時,若文件不存在則報錯,若文件存在,則文件指針在文件開頭,即從文件開頭開始讀文件
w:只寫:以該模式打開文件時,若文件不存在則創建一個文件,如文件存在,則清空文件內容,文件指針移到開頭
a:追加寫:以該模式打開文件時,若文件不存在則創建一個文件,如文件存在,則將文件指針移到文件末尾,在文件末尾寫入新的內容
6.控制文件讀寫內容的模式:(t 和 b都不能單獨使用,必須與r,w,a結合使用)
t:(默認):無論讀寫都是以字元為單位,只能識別文本文件,必須要制定encoding
b:無論讀寫都是以位元組為單位,可以識別所有文件,一定不能指定encoding
7.文件的拷貝
with open ('a.txt',mode='rb') as af,\
open('b.txt',mode='wb') as bf:
data=af.read
f.write(data)
執行程序後,打開文件,即可發現文件已成功拷貝,這里使用 b 而不是用 t 模式,是因為文件有多種格式
8.文件的修改:
文件的修改是在硬碟上實現文件的覆蓋,相當於一個新的文件以舊的文件名來命名的; 文件的修改有倆種方式,分別適用於不同的情景
方式一(適用於容量小的文件):這種方式的原理是:創建一個新的文件,將舊文件的內容拷貝到新的文件中;這樣內存里就存在倆個文件,故不適用於容量大的文件,具體代碼見下方 View
with open('a.txt',mode='rt',encoding='utf-8') as f:
data=f.read()
data_new=data.replace('yang', 'yv')
with open('b.txt',mode='wt',encoding='utf-8')as p:
p.write(data_new)
方式二(適用於容量大的文件):此方式的原理為:讀取舊文件的一行內容,修改後寫到臨時文件中,循環往復直到寫完,然後將源文件刪除,將臨時文件命名為源文件名.這種方式在內存中只存在2行文件,節省內存,可用於大文件
import os
with open('b.txt',mode='rt',encoding='utf-8') as f,\
open('.b.txt.swap',mode='wt',encoding='utf-8') as p:
for line in f:
p.write(line.replace('yv','yang'))
# 調用replace方法,將源文件中的'yv',換成'yang'
os.remove('b.txt')
os.rename('.b.txt.swap','b.txt')
9. 文件的階段:truncate(n)
將文件中n個位元組後內容全刪了,當 n 不存在時,即刪除文件全部內容
10.文件內指針的移動
f.seek(): 指針的移動是以位元組為單位的
seek 有三種模式:
0:(默認模式) 指針在文件開頭,只有在 0 模式可以在 t 模式下用,也可以在 b 模式下用,而 1 ,2 模式只能在 b 模式下使用
1:指針在當前位置
2:指針在文件末尾
以下為具體事例:
# 0
with open('a.txt',mode='rt',encoding='utf-8')as f:
f.seek(3,0)
print(f.tell()) # 指針當前位置
print(f.read()) # 從指針後讀出所有內容
# 1 參照指針當前位置
with open('a.txt',mode='rb')as f:
f.read(2)
f.seek(4,1)
print(f.tell())
print(f.read().decode('utf-8'))
# 2 參照文件末尾
with open('a.txt',mode='rb')as f:
f.seek(-5,2)
print(f.tell())
print(f.read().decode('utf-8'))
當 seek處於 2 模式時,可以將文件中新加入的內容列印出來,具體代碼如下:
# 另一個文件進行寫操作,寫的代碼如下:
with open('a.txt',mode='at',encoding='utf-8')as f:
f.write('hello world\n')
# 每在文件中寫入新的內容,都列印出來,以下代碼執行列印操作:
import time
with open('a.txt',mode='rb')as f:
f.seek(0,2)
while True:
line=f.readline() # readline 可以讀取沒有內容的部分
# print(line.decode('utf-8'))
if len(line)==0:
time.sleep(0.1)
else:
print(line.decode('utf-8'))
Ⅳ 如何正確理解Python文件讀寫模式字w+和r+
w+打開文件會將原文件內容刪除,可以同時對文件進行讀寫
r+打開文件會保持原文件內容不變,同樣可以同時對文件進行讀寫
Ⅵ python 幾種讀寫模式的區別及幾種常用的指令
f.read([size]):默認一次性讀入打開的文件內容。如果有size參數,則指定每次讀入字元數。注意,此處按字元來讀入,一個漢字為一個字元
f.readline([size]):一次讀入一行文件內容
f.readlines([size]):將文件內容全部讀入,保存在一個列表中,每行為一個元素。
f.writ(str,encoding=):將str寫入文件,可以指定寫入的編碼格式,默認為utf-8
f.writlines()
f.readable() : 判斷是否可讀,返回布爾值。如果是在只寫模式下打開文件, 也是返回false
f.writable():判斷是否可寫
f.tell() : 返回當前游標位置
f.seek(offset,whence=0):將游標位置移至所需位置。offset為偏移量。whence定義開始偏移的位置。0為從文件開頭偏移。1為從當前位置開始偏移。2為從文件末尾開始偏移,默認為0。注意,此處偏移量是按位元組計算,也就是一個漢字最少需要兩個偏移量。如果偏移量正好講一個漢字分開,則會報錯。
f.truncate(數值) 從游標位置截斷/刪除後面內容。
f.flush() 將內存內容立即寫入硬碟
Ⅶ Python題求解!
#open(路徑+文件名,讀寫模式)
#讀寫模式:r只讀,r+讀寫,w新建(會覆蓋原有文件),a追加,b二進制文件.常用模式
如:'rb','wb','r+b'等等
讀寫模式的類型有:
rU 或 Ua 以讀方式打開, 同時提供通用換行符支持 (PEP 278)
w 以寫方式打開,
a 以追加模式打開 (從 EOF 開始, 必要時創建新文件)
r+ 以讀寫模式打開
w+ 以讀寫模式打開 (參見 w )
a+ 以讀寫模式打開 (參見 a )
rb 以二進制讀模式打開
wb 以二進制寫模式打開 (參見 w )
ab 以二進制追加模式打開 (參見 a )
rb+ 以二進制讀寫模式打開 (參見 r+ )
wb+ 以二進制讀寫模式打開 (參見 w+ )
ab+ 以二進制讀寫模式打開 (參見 a+ )
RWA就不解釋了 帶加號的都是雙模式 以位元組流方式打開。帶B的是以二進制方式打開 就是機器碼 0110之類的
Ⅷ python可以同時對文件進行讀寫操作嗎
對文件的操作,步驟為:打開一個文件-->讀取/寫入內容-->保存文件
文件讀寫的3中模式
# 1、w 寫模式,它是不能讀的,如果用w模式打開一個已經存在的文件,會清空以前的文件內容,重新寫
# w+ 是讀寫內容,只要沾上w,肯定會清空原來的文件
# 2、r 讀模式,只能讀,不能寫,而且文件必須存在
# r+ 是讀寫模式,只要沾上r,文件必須存在
# 3、a 追加模式,也能寫,在文件的末尾添加內容
# 4、rb+、wb+、ab+,這種是二進制模式打開或者讀取,一些音樂文件
test1.txt
1 如果無情的風摘走了那片樹葉
2 如同摘走了我的心
3 在每一個想你的夜晚
4 請允許我將你抱緊
5 我不像一隻大雁可以秋去春來
6 銜回丟失的緣分
7 所以從來不敢回憶離別
8 越是清晰 越是傷心
9 你說所有的城市沒有不同
10 我寧願相信你心中有片草原
1、循環讀取文件中的每一行內容:
demo1.py1 file = open('test1.txt','r+')# 打開test1.txt 文件
2 for line in file: # 遍歷file文件
3 print('line裡面存放的是:',line) # 循環列印文件中每一行內容
4 print(type(line)) # <class 'str'> 類型是字元串
5 file.close()# 關閉文件
用with的方式打開文件,不用擔心使用完文件後忘記關閉,它會自動將文件關閉1 with open('test1.txt','r+') as file:
2 for line in file:
3 print('line裡面存放的是:',line) # 循環列印文件中每一行內容
4 print(type(line)) # <class 'str'> 類型是字元串
3、向文件中寫入內容
1 with open('users','a+') as fw: # 打開文件
2 fw.write('寫入文件內容')
4、用函數的方式讀取文件
1 def read_file(filename):
2 '''
3 用來讀取文件內容
4 :param filename: 文件名
5 '''
6 with open(filename,'a+') as fr:
7 fr.seek(0) # 移動文件指針
8 content = fr.read() # content 類型是字元串
9 print('content:',content)
10 read_file('users') # 調用函數
5、用函數的方式寫文件
1 def write_file(filename,content):
2 '''
3 用來讀取文件內容的
4 :param filename: 文件名
5 '''
6 with open(filename,'a+') as fw:
7 fw.seek(0) # 移動文件指針
8 fw.truncate() # 清空文件內容
9 fw.write(str(content))
10 write_file('a','hello world') # 調用函數
Ⅸ 關於Python文件中的w➕打開模式屬於什麼模式
w+是是以讀寫模式打開文件