python的read函數
『壹』 python中read() ,readline()以及readlines()區別
該篇文章主要是記錄python中操作文件的三個函數read(),readline()以及readlines()之間的擾或弊區別。
首先先給出結論:
1.read() 每次讀取整個文件,它通常將讀取到底文件內容放到一個字元串變數中,也就是說 .read() 生成文件內容是一個字元串類型。
2.readline()每團散只讀取文件的一行,通常也是讀取到的一行內容放到一個字元串變數中,返回str類型。
3.readlines()每次按行讀取整個文件內容,將讀取到的內容放到緩族一個列表中,返回list類型。
我的文件內容如下:
編寫程序如下:
得出結果如下:
編寫程序如下:
得出輸出結果如下:
編寫程序如下:
得到輸出結果如下:
『貳』 python文件的創建、寫入、讀取
最近在構思如何 本地化股票數據 ,覺得有必要復習一下python對文件的創建、寫入、和讀取。
首先先了解一下對於文件的處理都有常用函數:
open(path, mode):生成文件對象。
參數說明:path文件路徑、mode文件的操作模式
文件的操作模式說明
1、寫入模式:『w』創建、『wb』創建二進制、『a』追加內容、『ab』二進制形式追加內容(另外如在後面添加『+』號,附加讀取功能如:『w+』)
可用write()、writelines()寫入內容、close()保存文件
注意:windows系統在輸入寫入中文時,輸入參數 encoding=『utf-8』
可用read()函數對文件內容進行讀取
注意:讀取的內容是從結尾開始的,用seek(0)函數指定讀取位置為開頭
這里我用『w+』模式來舉例
2、讀取模式:『r』讀取內容、『rb』讀取二進制內容(區別於寫入模式的讀取,讀取模式從開頭開始讀取)
除了read()、還有readline()調用一次返回一行數據、readlines()返回每行數據list
另外還有mode屬性:看查文件對象的模式、closed屬性:判斷文件是否關閉、name屬性:返迴文件名
這里我還要介紹一個關鍵字with,他是一個表達式能為調用的文件對象別名,且自動關閉文件。
『叄』 python函數有哪些
這個還是到化大的類型應該是有許多大,比如說他的藝術函數,或者是上面還說進行求和,然後有各種各樣的。
『肆』 python中isread函數么
文件對象(open() 函數的返回值)提供了read()函數可以按位元組或字元讀取文件內容,到底是讀取位元組還是字元,取決於使用 open() 函數打開文件時,是否使用了 b 模式,如果使用了 b 模式,則每次讀取一個位元組;反之,則每次讀取一個字元。
read() 函數的基本語法格式如下:
file.read([size])
其中,file 表示打開的文件對象;size 作為一個可選參數,用於指定要讀取的字元個數,如果省略,則默認一次性讀取所有內容。
【例 1】採用循環讀取整個文件的內容。
# a.txt 文件內容為:C語言中文網
f = open("a.txt", 'r', True)
while True:
# 每次讀取一個字元
ch = f.read(1)
# 如果沒有讀到數據,跳出循環
if not ch:
break
# 輸出ch
print(ch, end='')
f.close()
運行結果為:
C語言中文網
上面程序採用循環依次讀取每一個字元(因為程序沒有使用 b 模式),每讀取到一個字元,程序就輸出該字元。
正如從上面程序所看到的,當程序讀寫完文件之後,推薦立即調用 close() 方法來關閉文件,這樣可以避免資源泄露(後續章節會詳細介紹 close() 函數)。
注意,在調用 read() 函數讀取文件內容時,成功讀取的前提是在 open() 函數中使用 r 或 r+ 的模式打開文件,否則(模飢比如將上面程序中 open()的打開模式改為 w),程序會拋出io.UnsupportedOperation異常:
Traceback (most recent call last):
File "C:\Users\mengma\Desktop\demo.py", line 4, in
ch = f.read(1)
io.UnsupportedOperation: not readable
【例 2】調用 read() 方法時不傳入參數,該方法默認會讀取全部文件內容。例如:
f = open("旦激返a.txt", 'r', True)
# 直接讀取全部文件
print(f.read())
f.close()
運行結果為:
C語言中文網
read()函數拋出UnicodeDecodeError異常的解決方法
當使用 open() 函數打開文本文件時,默認會使用當前操作系統的字元集,比如 Windows 平台,open() 函數默認使用 GBK 字元集。因此,上面程序讀取的 a.txt 也必須使用 GBK 字元集保存;否則,程序就會出現UnicodeDecodeError錯誤。
如果要讀取的文件所使用的字元集和當前操作系統的字元集不匹配,則有兩種解決方式:
使用二進制模式讀取,然後用 bytes 的 decode() 方法恢復成字元串。
利用 codecs 模塊的 open() 函數來打開文件,該函數在打開文件時允許指定字元集。
例如,下面程序使用二進制模式來讀取文本文件:
# 指定使用二進制方式讀取文件內容,a.txt 以 utf-8 編碼存儲
f = open("a.txt", 'rb', True)
# 直接讀取全部文件,並調用bytes的decode將位元組內容恢復成字元串
print(f.read().decode('utf-8'))
f.close()
上面程序在調用 open() 函數時,傳入了 rb 模式,這表明採用二進制模式讀取文件,此時文件對象的 read() 方法返回的是 bytes 對象,程序可調用 bytes 對象的 decode() 方法將它恢復成字元串。由於此時讀取的 a.txt 文件是以 UTF-8 的格式保存的,因此程序需要使用 decode() 方法恢復字元串時顯鉛襪式指定使用 UTF-8 字元集。
下面程序使用 codes 模塊的 open() 函數來打開文件,此時可以顯式指定字元集:
import codecs
# 指定使用utf-8 字元集讀取文件內容
f = codecs.open("a.txt", 'r', 'utf-8', buffering=True)
while True:
# 每次讀取一個字元
ch = f.read(1)
# 如果沒有讀取到數據,則跳出循環
if not ch : break
# 輸出ch
print (ch, end='')
f.close()
上面程序在調用 open() 函數時顯式指定使用 UTF-8 字元集,這樣程序在讀取文件內容時就完全沒有問題了。
『伍』 Python文件讀寫
常見的讀寫操作:
Python內置了讀寫文件的函數,用法和C是兼容的。本節介紹內容大致有:文件的打開/關閉、文件對象、文件的讀寫等。僅示例介紹 TXT 類型文檔的讀寫,也就是最基礎的文件讀寫,也需要注意編碼問題;
open() close() with open(...) as ...
看以下示例就能了解 Python 的 open() 及 close() 函數。這邊調用 read()方法可以一次讀取文件的全部內容,Python把內容讀到內存,用一個str對象表示,具體使用參見下文。
在 E 盤 python_file 文件夾下新建一 a.txt,輸入隨意,如下:
Python 操作 打開及關閉方式 如下:
注意 open() 之後 一定要 close()。但由於文件讀寫時都可能產生IOError,為了保證無論是否出錯都能正確地關閉文件,我們用 try ... finally 來實現:
python 簡化了改寫法,即用 with open(...) as ... ; 建議之後文件讀寫都用該寫法:
上面,你肯定注意到了參數 "r";該參數決定了打開文件的模式:只讀,寫入,追加等。所有可取值見如下的完全列表。這個參數是非強制的,默認文件訪問模式為只讀(r)。
相關參數:
File 對象
file 為一對象,它有一些內置屬性,如下
file對象的屬性:
read() read(size) readline() readlines()
之前的例子已經接觸到了 read() 函數,該函數會會一次性讀取文件的全部內容,如果能確保文件的大小,自然可以。但若文件過大,內存就爆了,所以,可以反復調用read(size)方法,每次最多讀取size個位元組的內容;也可調用 readline() 每次讀取一行內容;而調用readlines()可以一次讀取所有內容並按行返回list。總之,根據需求來。僅以 txt 文件為例,其他的文件讀取需要特殊處理;另外,文件的格式編碼方式也需要注意;這邊僅介紹讀取方法,其他的會出專題來學習。
在D:\python_file 下新建 poet.txt;示例如下,由於一個中文會佔多個位元組,故read(size) 部分會亂碼,如:
write()
寫文件和讀文件是一樣的,唯一區別是調用open()函數時,傳入標識符'w'或者'wb'表示寫文本文件或寫二進制文件;'a' 對應的表示追加等。
如下示例,由於 write.txt 文件不存在,創建該文件並寫入:
在上例基礎上,繼續,該文件被重寫:
繼續,這次使用追加,會在文件結尾追加:
https://blog.csdn.net/msspark/article/details/86745391
https://www.cnblogs.com/tianyiliang/p/8192703.html
https://www.cnblogs.com/camilla/p/7234657.html
https://blog.csdn.net/songlh1234/article/details/83316468
https://www.php.cn/python-tutorials-412484.html
https://blog.csdn.net/weay/article/details/80946152
https://blog.csdn.net/xc_zhou/article/details/81044836
『陸』 怎麼用Python對文件進行基本的操作
用Python對文件進行的一些基本操作如下:
第一,在桌面上新建一個文件夾test,在該文件夾下創建一個python.txt,在該文件里輸入一段文字。
第二,打開cmd命令窗口,並輸入python,進入python軟體命令窗口。
第三,使用open()函數打開文件python.txt文件。
第四,讀取文件內容,主要使用了File對象的read()方法。
第五,覆蓋重新寫入文件,主要使用了File對象write()方法,這里使用read()函數時,第二個參數設置為'w'。
第六,添加寫入文件。這里使用read()函數時,第二個參數為'a'。
『柒』 Python讀取文件內容的方法有幾種
filename=open('i:\\install\\test.txt','r+')#讀取xx路徑xx文件;r+代表的是讀寫並存方式 print filename.read()#讀取所有的文件
『捌』 python對文本文件的讀有哪些方法,寫有哪些方法
1 文件讀取全文本操作
在一定場景下我們需要把文本全部內容讀取出來,進行處理。python提供三種函數讀取文件,分別是read readline readlines,
read():讀取文件的全部內容,加上參數可以指定讀取的字元。
readline():讀取文件的一行。
readlines():讀取文件的所有行到內存中。
不同場景下我們可以選擇不同函數對文件進行讀取。
1.1 方法一
file_name = input("請輸入你要打開的文件的完整路徑及名稱")
file= open(file_name, "r")
txt=file.read()
# 全文本的處理
file.close()
使用read函數將文件中的內容全部讀取,放在字元串變數txt中。這樣操作適合於文本較小,處理簡單的情況,當文件較大時,這種方式處理時不合適的。一次性讀取較大的文件到內存中,會耗費較多的時間和資源。這時候分批處理效果更好。
1.2 方法二
file_name = input("請輸入你要打開的文件的完整路徑及名稱")
file= open(file_name, "r")
txt= file.read(4)
# 文本的處理while txt != ""txt= file.read(4)
# 批量文本處理
file.close()
這種方法適合於分批處理文本信息,每次批量讀入,批量處理,不會對內存造成較大的壓力。
1.3 方法三
file_name = input("請輸入你要打開的文件的完整路徑及名稱")
file= open(file_name, "r")for line infile.readlines():
# 處理每一行數據
file.close()
這種處理方式適合處理以行為分割特點的文本,並且文本較小,因為這種處理方式需要一次性把文件所有內容讀取到內存中。
1.4 方法四
file_name = input("請輸入你要打開的文件的完整路徑及名稱")
file= open(file_name, "r") # 這里的file時文件句柄for line infile:
# 處理每一行數據
file.close()
這種方式和方法三中的區別是分行讀入,逐行處理,不會一次性把文件所有內容都讀入到內存中,對一些大文件的處理是很有效的。
2 文件寫入文本操作
文件寫入有兩種寫入函數和一種輔助支持。
write():向文件中寫入一個字元或者位元組流
writelines():將一個元素全為字元串的列表寫入到文件中 需要注意的是,writelines寫入列表元素的時候會把列表元素的內容拼接到一起寫入,不會有換行和空格 。
seek(): 輔助寫入函數offset偏移量參數代表含義如下
0 - 文件開頭
1 - 當前位置
2 - 文件結尾
2.1 方法一
file_name = input("output.txt", "w+")
text= "hello world!"file_name.write(text)
file.close()
2.2 方法二
file_name = input("output.txt", "w+")
list= ["中午","早上","晚上"]
file_name.writelines(list)for line infile:
# 讀取寫入的數據,這時候發現是沒有任何內容的
file.close()
我們增加一行代碼就可以讀取到寫入的文件內容,利用seek()函數調整寫操作指針的位置,可以實現寫操作之後的正常讀取。
file_name = input("output.txt", "w+")
list= ["中午","早上","晚上"]
file_name.readlines(list)
file_name.seek(0) # 調整寫的指針到文件的開始位置for line infile:
# 讀取寫入的數據,這時候會讀出一行寫入的數據。
file.close()
『玖』 python3用read()函數讀取文件兩次,就變成空字元串了
python在讀取文件的時候是根據游標位置來讀取的。讀一行以後游標位置到了下一行。再來個read又到了下一行。
想要重新從頭開始讀的話用f.seek(0)
將游標位置放到最前面。這樣再f.read()就是第一行的內容
還有個方法是f.tell()
告訴你當前游標的位置。你可以把文件都讀完了以後f.tell()一下看看游標位置
然後再f.seek(0)
再f.tell()一下看看游標位置
with open() as f跟你截圖用的差不多,只不過這種方式不用f.close(),會自動關閉文件句柄。不過也可以手動關閉文件句柄