pythonread
⑴ python中read,readline和readlines三者間的區別和用法
這篇文章主要給大家介紹了關於Python中讀取文件的read()、readline()和readlines()方法三者間的區別和用法,需要的朋友可以參考下
前言
眾所周知在python中讀取文件常用的三種方法:read(),readline(),readlines(),今天看項目是又忘記他們的區別了。以前看書的時候覺得這東西很簡單,一眼掃過,待到用時卻也只知道有這么幾個方法,不懂得它的原理與用法。也許吧,沒有永遠的記憶,況且根本沒有用心去記它。話不多說,來一起看看詳細的介紹:
准備
假設a.txt的內容如下所示:
Hello
Welcome
What is the fuck...
一、read([size])方法
read([size])方法從文件當前位置起讀取size個位元組,若無參數size,則表示讀取至文件結束為止,它范圍為字元串對象
f = open("a.txt")
lines = f.read()
print lines
print(type(lines))
f.close()
輸出結果:
Hello
Welcome
What is the fuck...
<type 'str'> #字元串類型
二、readline()方法
從字面意思可以看出,該方法每次讀出一行內容,所以,讀取時佔用內存小,比較適合大文件,該方法返回一個字元串對象。
f = open("a.txt")
line = f.readline()
print(type(line))
while line:
print line,
line = f.readline()
f.close()
輸出結果:
<type 'str'>
Hello
Welcome
What is the fuck...
三、readlines()方法讀取整個文件所有行,保存在一個列表(list)變數中,每行作為一個元素,但讀取大文件會比較占內存。
f = open("a.txt")
lines = f.readlines()
print(type(lines))
for line in lines:
print line,
f.close()
輸出結果:
<type 'list'>
Hello
Welcome
What is the fuck...
四、linecache模塊
當然,有特殊需求還可以用linecache模塊,比如你要輸出某個文件的第n行:
# 輸出第2行
text = linecache.getline(『a.txt',2)
print text,
對於大文件效率還可以。
⑵ python中read,readline和readlines的區別
read 讀取整個文件
readline 讀取下一行
readlines 讀取整個文件到一個迭代器以供遍歷(讀取到一個list中,以供使用,比較方便)
⑶ python中readline()怎麼用,還有readline和readlines,read的區別和用法
python中readline()是用來讀取文本文件中的一行。
readline和readlines,read都是用來讀取文件內容,readline()每次讀取一行,當前位置移到下一行;readlines()讀取整個文件所有行,保存在一個列表(list)變數中,每行作為一個元素;read(size)從文件當前位置起讀取size個位元組(如果文件結束,就讀取到文件結束為止),如果size是負值或省略,讀取到文件結束為止,返回結果是一個字元串。
f=open("myfile")
while True:
line=f.readline()
if line:
print line,
else:
break
f=open("myfile")
lines=f.readline() #lines是一個列表變數
f=open("myfile")
lines=f.read() #lines是一個字元串變數
⑷ 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中read() ,readline()以及readlines()區別
該篇文章主要是記錄python中操作文件的三個函數read(),readline()以及readlines()之間的擾或弊區別。
首先先給出結論:
1.read() 每次讀取整個文件,它通常將讀取到底文件內容放到一個字元串變數中,也就是說 .read() 生成文件內容是一個字元串類型。
2.readline()每團散只讀取文件的一行,通常也是讀取到的一行內容放到一個字元串變數中,返回str類型。
3.readlines()每次按行讀取整個文件內容,將讀取到的內容放到緩族一個列表中,返回list類型。
我的文件內容如下:
編寫程序如下:
得出結果如下:
編寫程序如下:
得出輸出結果如下:
編寫程序如下:
得到輸出結果如下:
⑹ 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()
⑺ Python讀取文件內容的方法有幾種
filename=open('i:\\install\\test.txt','r+')#讀取xx路徑xx文件;r+代表的是讀寫並存方式 print filename.read()#讀取所有的文件
⑻ 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 字元集,這樣程序在讀取文件內容時就完全沒有問題了。