亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Python中,“雖然不是EOF”的完美替代品是什么?

在Python中,“雖然不是EOF”的完美替代品是什么?

Helenr 2019-10-09 15:34:28
要讀取一些文本文件,無論是C還是Pascal,我始終使用以下代碼段讀取數據,直到EOF:while not eof do begin  readline(a);  do_something;end;因此,我想知道如何在Python中簡單快速地做到這一點?
查看完整描述

3 回答

?
白衣非少年

TA貢獻1155條經驗 獲得超0個贊

您可以在Python中模仿C語言。


要讀取不超過max_size字節數的緩沖區,可以執行以下操作:


with open(filename, 'rb') as f:

    while True:

        buf = f.read(max_size)

        if not buf:

            break

        process(buf)

或者,一行一行地顯示文本文件:


# warning -- not idiomatic Python! See below...

with open(filename, 'rb') as f:

    while True:

        line = f.readline()

        if not line:

            break

        process(line)

您需要使用while True / break構造函數,因為除了缺少讀取返回的字節以外,Python中沒有eof測試。


在C語言中,您可能具有:


while ((ch != '\n') && (ch != EOF)) {

   // read the next ch and add to a buffer

   // ..

}

但是,您不能在Python中使用此功能:


 while (line=f.readline()):

     # syntax error

因為Python的表達式中不允許賦值。


在Python中這樣做當然更慣用了:


# THIS IS IDIOMATIC Python. Do this:

with open('somefile') as f:

    for line in f:

        process(line)


查看完整回答
反對 回復 2019-10-09
?
暮色呼如

TA貢獻1853條經驗 獲得超9個贊

用于打開文件并逐行讀取的Python習慣用法是:


with open('filename') as f:

    for line in f:

        do_something(line)

該文件將在上述代碼的末尾自動關閉(該with結構將完成此工作)。


最后,值得注意的是line將保留尾隨的換行符。可以使用以下方法輕松刪除它:


line = line.rstrip()


查看完整回答
反對 回復 2019-10-09
  • 3 回答
  • 0 關注
  • 662 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號