pythonreadline返回
① python基礎之:Python中的IO
IO就是輸入和輸出,任何一個程序如果和外部希望有交互的話,都需要使用到IO。相對於java而言,Python中的IO更加的簡單,易用。
本文將會詳細介紹Python中的IO操作。
linux中有三種標准輸入輸出,分別是STDIN,STDOUT,
STDERR,對應的數字是0,1,2。
STDIN是標准輸入,默認從鍵盤讀取信息;
STDOUT是標准輸出,默認將輸出結果輸出至終端;
STDERR是標准錯誤,默認將輸出結果輸出至終端。
我們常用的 2>&1,指將標准輸出、標准錯誤指定為同一輸出路徑 。
python中,我們可以使用print方法來輸出信息。\
我們看下print函數的定義:
print函數將 objects 列印到 file 指定的文本流,以 sep 分隔並在末尾加上 end。 sep, end, file 和 flush 如果存在,那麼必須以關鍵字參數的形式給出。
所有非關鍵字參數都會被轉換為字元串,並會被寫入到流,以 sep 分割,並在末尾加上 end。 sep 和 end 都必須為字元串;它們也可以為 None,這意味著使用默認值。 如果沒有給出 objects,則 print() 將只寫入 end。
file 參數必須是一個具有 write(string) 方法的對象;如果參數不存在或為 None,則將使用 sys.stdout。 由於要列印的參數會被轉換為文本字元串,因此 print()不能用於二進制模式的文件對象。 對於這些對象,可以使用 file.write(...)。
輸出是否被緩存通常決定於 file,但如果 flush 關鍵字參數為真值,輸出流會被強制刷新。
可以看到print的輸出格式還是比較簡單的。我們接下來看一下怎麼豐富輸出的格式。
如果想要格式化字元串,可以在字元串的開始引號之前加上 f 或 F。
這樣的話,我們可以直接在字元串中引入變數值,只需要把變數放在 { 和 } 中間即可。
除了在{ }中放入Python變數之外,還可以在其中放入函數:
在 ':' 後傳遞一個整數可以讓該欄位成為最小字元寬度。方便列對齊:
{ }中的變數後面還可以跟著轉值符號:'!a' 表示應用 ascii() ,'!s' 表示應用 str(),還有 '!r' 表示應用 repr():
除此之外,str本身自帶一個功能強大的format 函數:
調用此方法的字元串可以包含字元串字面值或者以花括弧 {} 括起來的替換域,每個替換域可以包含一個位置參數的數字索引,或者一個關鍵字參數的名稱。 返回的字元串副本中每個替換域都會被替換為對應參數的字元串值。
再看一個使用索引的例子:
看一個關鍵字的例子:
再看一個組合的例子:
還有非常復雜的組合的例子:
或者使用 '**' 符號將 table 作為關鍵字參數傳遞:
還可以使用n類型 '{:n}' 來格式化數字:
如果我們只是想要將Python對象轉換為字元串,那麼可以使用repr()或者str(), str() 函數是用於返回人類可讀的值的表示,而 repr()是用於生成解釋器可讀的表示。
舉個例子:
str對象還提供了一些對字元串進行手動格式化的方法:
字元串對象的 str.rjust()方法通過在左側填充空格來對給定寬度的欄位中的字元串進行右對齊。類似的方法還有 str.ljust()和 str.center()。
如果輸入的字元串太長,它們不會截斷字元串,而是原樣返回。
如果想保證字元串的長度,則可以使用切片: x.ljust(n)[:n] 。
還可以使用str.zfill()來用0填充字元串:
% 也可以用來格式化字元串,給定 'string' % values,則 string 中的 % 實例會以零個或多個 values 元素替換。 此操作通常被稱為字元串插值。
python中文件讀取非常簡單,使用open()方法即可。
open()會返回一個文件對象。我們看一下它的定義:
第一個參數是文件名。
第二個參數是文件打開的模式,可用的模式有:
默認模式為 'r' 。
看一個open文件的例子:
文件打開了,自然需要被關閉,所以我們需要顯示調用 f.close() 方法:
有沒有類似java中的try with resource的自動關閉文件的功能呢?
我們可以使用with,這樣文件在使用完畢之後,會自動被關閉,非常的好用。
文件被關閉之後,如果想要再次讀取,就會報錯:
獲取到文件對象之後,我們就可以調用文件中的方法了。
f.read(size) 會讀取一些數據並將其作為字元串(在文本模式下)或位元組串對象(在二進制模式下)返回。
size 是一個可選的數值參數。 當 size 被省略或者為負數時,將讀取並返回整個文件的內容;當取其他值時,將讀取並返回至多 size 個字元(在文本模式下)或 size 個位元組(在二進制模式下)。 如果已到達文件末尾,f.read() 將返回一個空字元串 ('')。
f.readline() 從文件中讀取一行;換行符(\n)留在字元串的末尾,如果文件不以換行符結尾,則在文件的最後一行省略。如果 f.readline() 返回一個空的字元串,則表示已經到達了文件末尾,而空行使用 '\n' 表示,該字元串只包含一個換行符。
還有一種更加簡單的讀取方法,就是從文件中遍歷:
如果你想以列表的形式讀取文件中的所有行,你也可以使用 list(f) 或 f.readlines()。
f.write(string) 會把 string 的內容寫入到文件中,並返回寫入的字元數。
如果是在文本模式下,那麼在寫入文件之前,需要把對象轉換成為文本形式,我們可以使用str()來進行轉換。
使用f.seek(offset, whence)可以定位文件指針的位置,然後後續會從該位置開始進行讀取操作。
whence 的 0 值表示從文件開頭起算,1 表示使用當前文件位置,2 表示使用文件末尾作為參考點。 whence 如果省略則默認值為 0,即使用文件開頭作為參考點。
JSON是一個很方便進行信息交流的文件格式。我們看下怎麼使用JSON來將對象轉換為字元串:
mps是將對象轉換為json str。 json還有一個mp方法,可以直接將對象存入到文件中。
要從文件中解析出json字元串,可以使用load:
JSON 中的鍵-值對中的鍵永遠是 str類型的。當一個對象被轉化為 JSON 時,字典中所有的鍵都會被強制轉換為字元串。這所造成的結果是字典被轉換為 JSON 然後轉換回字典時可能和原來的不相等。換句話說,如果 x 具有非字元串的鍵,則有 loads(mps(x)) != x。
② 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,他是一個表達式能為調用的文件對象別名,且自動關閉文件。
③ Python3 輸入輸出和File(文件) 方法
Python兩種輸出值的方式: 表達式語句和 print() 函數。第三種方式是使用文件對象的 write() 方法,標准輸出文件可以用 sys.stdout 引用。
如果你希望輸出的形式更加多樣,可以使用 str.format() 函數來格式化輸出值。如果你希望將輸出的值轉成字元串,可以使用 repr() 或 str() 函數來實現。
str(): 函數返回一個用戶易讀的表達形式。
repr(): 產生一個解釋器易讀的表達形式。
str.format() 的使用
讀取鍵盤輸入
Python 提供了 input() 內置函數,從標准輸入讀入一行文本,默認的標准輸入是鍵盤。
open() 用於打開一個文件,並返迴文件對象,基本語法格式如下:
open(filename, mode='r')
完整的語法格式為:
open(filename, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
參數說明:
filename: 必需,文件路徑+文件名稱(相對或者絕對路徑)
mode: 可選,文件打開模式:只讀,寫入,追加等,默認模式為只讀(r)
buffering: 設置緩沖
encoding: 一般使用utf8
errors: 報錯級別
newline: 區分換行符
closefd: 傳入的file參數類型
opener: 設置自定義開啟器,開啟器的返回值必須是一個打開的文件描述符。
不同模式mode打開文件的說明:
t 文本模式 (默認的模式)
b 二進制模式,一般用於非文本文件如圖片等
x 寫模式,新建一個文件,如果該文件已存在則會報錯
+ 打開一個文件進行更新(可讀可寫)
r 以只讀方式打開文件。文件的指針將會放在文件的開頭。是默認模式。
rb 以二進制格式打開一個文件用於只讀。文件指針將會放在文件的開頭。
r+ 打開一個文件用於讀寫。文件指針將會放在文件的開頭。
rb+ 以二進制格式打開一個文件用於讀寫。文件指針將會放在文件的開頭。
w 打開一個文件只用於寫入。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。
wb 以二進制格式打開一個文件只用於寫入。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。
w+ 打開一個文件用於讀寫。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。
wb+ 以二進制格式打開一個文件用於讀寫。如果該文件已存在則打開文件,並從開頭開始編輯,即原有內容會被刪除。如果該文件不存在,創建新文件。
a 打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。
ab 以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾,新的內容將會被寫入到已有內容之後。如果該文件不存在,創建新文件進行寫入。
a+ 打開一個文件用於讀寫。如果該文件已存在,文件指針將會放在文件的結尾。文件打開時會是追加模式。如果該文件不存在,創建新文件用於讀寫。
ab+ 以二進制格式打開一個文件用於追加。如果該文件已存在,文件指針將會放在文件的結尾。如果該文件不存在,創建新文件用於讀寫。
f.write(string) 將 string 寫入到文件中, 然後返回寫入的字元數
f.writelines(sequence) 向文件寫入一個序列字元串列表,如果需要換行則要自己加入每行的換行符。
f.read(size) 讀取一定數目的數據, 然後作為字元串或位元組對象返回。size 是一個可選參數。當 size 參數忽略或者為負, 那麼該文件的所有內容都將被讀取並且返回。
f.readline() 從文件中讀取單獨的一行。換行符為 '\n'。讀取整行,包括 "\n" 字元。f.readline() 如果返回一個空字元串, 說明已經讀取到最後一行。
f.readlines([sizeint])] 讀取所有行並返回列表類型,若給定sizeint>0,返回總和大約為sizeint位元組的行, 並且將這些位元組按行分割。實際讀取值可能比 sizeint 較大, 因為需要填充緩沖區。
f.tell() 返迴文件對象當前所處的位置, 它是從文件開頭開始算起的位元組數。
f.seek() 移動文件讀取指針到指定位置,如果要改變文件當前的位置, 可以使用f.seek(offset, from_what) 函數。from_what 的值(默認為0), 如果是 0 表示開頭, 如果是 1 表示當前位置, 2 表示文件的結尾,例如:
seek(x,0) : 從起始位置即文件首行首字元開始移動 x 個字元
seek(x,1) : 表示從當前位置往後移動x個字元
seek(-x,2):表示從文件的結尾往前移動x個字元
file.flush() 刷新文件內部緩沖,直接把內部緩沖區的數據立刻寫入文件, 而不是被動的等待輸出緩沖區寫入
file.fileno() 返回一個整型的文件描述符(file descriptor FD 整型), 可以用在如os模塊的read方法等一些底層操作上
file.isatty() 如果文件連接到一個終端設備返回 True,否則返回 False
file.truncate([size]) 從文件的首行首字元開始截斷,截斷文件為 size 個字元,無 size 表示從當前位置截斷;截斷之後後面的所有字元被刪除,其中 windows 系統下的換行代表2個字元大小。
f.close() 關閉文件並釋放系統的資源。關閉後文件不能再進行讀寫操作,否則會拋出異常
當處理一個文件對象時, 使用 with 關鍵字是非常好的方式。在結束後, 它會幫你正確的關閉文件。 而且寫起來也比 try - finally 語句塊要簡短:
python的pickle模塊實現了基本的數據序列和反序列化。通過pickle模塊的序列化操作能夠將程序中運行的對象信息保存到文件中去,永久存儲。通過pickle模塊的反序列化操作能夠從文件中創建上一次程序保存的對象。
基本介面:
pickle.mp(obj, file, [,protocol])
有了 pickle 對象, 就能對 file 以讀取的形式打開:
x = pickle.load(file)
從 file 中讀取一個字元串,並將它重構為原來的python對象。
示例:使用pickle模塊將數據對象保存到文件
示例:使用pickle模塊從文件中重構python對象
④ python中read,readline和readlines的區別
read 讀取整個文件
readline 讀取下一行
readlines 讀取整個文件到一個迭代器以供遍歷(讀取到一個list中,以供使用,比較方便)
⑤ python文件讀取與寫入
open(filepath) :打開文件
open(filepath,'r') :打開方式,默認是讀取
open(filepath).read() :讀取文件中的內容
open(filepath).readline() :讀取文件中一行的內容
open(filepath).readline()[1] :讀取文件中的內容,返回值是列表。
open(filepath).close() :關閉文件
open(filepath).seek(0) :將游標回到首位
with open()函數,不用close()方法,默認自動關閉,所以需要制定一些規則.
文件內建函數和方法:
open() : 打開文件
read() :輸入
readline() :輸入一行
seek() :文件內移動
write() :輸出
close() :關閉文件
⑥ python 中readline 和readlines的區別
【轉自:】
我們談到「文本處理」時,我們通常是指處理的內容。Python
將文本文件的內容讀入可以操作的字元串變數非常容易。文件對象提供了三個「讀」方法: .read()、.readline() 和
.readlines()。每種方法可以接受一個變數以限制每次讀取的數據量,但它們通常不使用變數。 .read()
每次讀取整個文件,它通常用於將文件內容放到一個字元串變數中。然而 .read()
生成文件內容最直接的字元串表示,但對於連續的面向行的處理,它卻是不必要的,並且如果文件大於可用內存,則不可能實現這種處理。
.readline() 和 .readlines() 非常相似。它們都在類似於以下的結構中使用:
Python .readlines() 示例
fh = open('c:\\autoexec.bat')
for line in fh.readlines():
print line
.readline() 和 .readlines() 之間的差異是後者一次讀取整個文件,象 .read() 一樣。.readlines()
自動將文件內容分析成一個行的列表,該列表可以由 Python 的 for ... in ... 結構進行處理。另一方面,.readline()
每次只讀取一行,通常比 .readlines() 慢得多。僅當沒有足夠內存可以一次讀取整個文件時,才應該使用 .readline()。
⑦ 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在讀取文件時用的迭代器和readline有何區別
我想使用迭代器和readline的區別大概在於「讀到文件末尾的時候,是否會拋出異常(是否用到了__next__方法),以及讀取內容方式的差異」
每次調用readline,會前進到下一行進行讀取,至文件末尾時返回空字元串,並不會拋出異常。而使用迭代器讀至文件末尾時會拋出StopInteration異常
python有個迭代協議:含有__next__()方法的對象會反復調用該方法來返回數據流中的後繼項,當沒有可用數據時,產生一個StopInteration異常
迭代器是遵循迭代協議的物件。所有迭代工具內部在每次迭代時都會調用__next__(),並且捕捉StopIteration異常來確定何時離開。
for循環會將文件內容預載入到內存中,生成字元串列表。所以用這樣的方式去讀取文本文件,運行最快,寫法也很簡單。
而readline的優勢在於,當我們只需要讀取某行時,可以在readline的size參數里直接指定,並不需要載入整個文件,當然readline還有其他方便的內置函數,文檔上都有一一列出
⑨ 求問python中readline與readlines區別
readline返回一行的字元串, readlines返回包含文件所有內容的字元串列表, 每個元素是一行的字元串