日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python只读打开文件_关于python:只读文件的第一行?

發布時間:2023/12/14 python 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python只读打开文件_关于python:只读文件的第一行? 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

如何使用python只得到文件的第一行作為字符串?

如果您已經閱讀了文件("在閱讀了文件之后"),那么您已經閱讀了第一行!(假設至少有一行。)

請注意,現在所說的問題與原來的含義不同。有些答案現在看起來很愚蠢,因為他們考慮到了"在文件中閱讀后"部分(已刪除)。

使用.readline()方法(python 2 docs,python 3 docs):

with open('myfile.txt') as f:

first_line = f.readline()

一些注釋:

如文檔中所述,除非它是文件中的唯一一行,否則從f.readline()返回的字符串將包含一個尾隨新行。您可能希望使用f.readline().strip()來刪除換行符。

當塊結束時,with語句自動再次關閉文件。

with語句僅在python 2.5和更高版本中有效,而在python2.5中,您需要使用from __future__ import with_statement。

在python 3中,您應該為打開的文件指定文件編碼。多讀…

在python 3中,如果文件是ascii或utf8,則不必指定文件編碼。如果不是這樣,您應該指定codecs.open在python 2中的編碼。

@evpok"在python 3中,如果文件是ascii或utf8,則不必指定文件編碼"-如果這只是嚴格正確的話!實際情況稍顯混亂;如docs中所述,所使用的默認編碼依賴于平臺(甚至在同一臺計算機上也可能不同,這取決于您如何啟動python——例如,我看到了在我的正常shell中工作的代碼,假設在使用mod_wsgi運行apache時,utf-8隨后會爆炸。

infile = open('filename.txt', 'r')

firstLine = infile.readline()

您沒有關閉文件。使用with的解決方案更好。

fline=open("myfile").readline().rstrip()

我是來找這個的。尤其是因為rstrip()刪除了換行符。

-1;這不會關閉文件,如果第一行除了換行符本身之外還包含任何尾隨空格,則返回錯誤的結果。

@markamery:實際上,因為文件句柄沒有分配給變量,所以它會立即被垃圾收集,從而關閉文件。(當然,使用上下文管理器的公認解決方案仍然更好。)

@acdr您所說的對于cpython是正確的,但對于其他的python實現則不是正確的-請參見pypy垃圾收集文檔,其中提到"文件…如果超出范圍,則不會立即關閉。出于這個原因,人們通常認為(例如在stackoverflow.com/a/7396043/1709587上),依賴你描述的行為是不好的做法。

應該這樣做:

f = open('myfile.txt')

first = f.readline()

first_line = next(open(filename))

這也會關閉文件嗎?

最后,當python離開塊時。

要返回打開文件的開頭,然后返回第一行,請執行以下操作:

my_file.seek(0)

first_line = my_file.readline()

為了更好地理解,它將是"my_file.seek(0)line=my_file.readline()"

這里還有很多其他答案,但要準確回答您提出的問題(在@markamery去編輯原始問題并改變其含義之前):

>>> f = open('myfile.txt')

>>> data = f.read()

>>> # I'm assuming you had the above before asking the question

>>> first_line = data.split('

', 1)[0]

換句話說,如果您已經讀取了文件(如您所說),并且在內存中有一大塊數據,那么為了有效地從文件中獲取第一行,只需對換行符執行split(),然后從結果列表中獲取第一個元素。

注意,這不包括行尾的字符,但我假設您無論如何都不想要它(而且一個單行文件甚至可能沒有一個)。另外請注意,雖然它非常短和快速,但它確實會復制數據,因此對于一個真正大的內存塊,您可能不認為它是"高效的"。一如既往,這取決于…

如果這是一個大文件,f.read()將嘗試將整個文件加載到內存中,這不是一個好主意。另一種方法是一次讀取一個字符,直到遇到換行符或EOF為止。

實際上,所有其他的答案都是更好的選擇。通常,使用readline()和朋友讀取一個文件時,會一次加載整個塊,可能是32K的give或take,然后搜索該塊以查找下一個換行符。更快更高效。我的答案只有在他已經加載了全部內容的情況下才有用,在這種情況下,我們可以假設他對所有內容都在內存中是滿意的。

我不相信我改變了意思。在"讀取"整個文件之后,詢問如何"讀取"文件的第一行是毫無意義的。因此,對我來說,很明顯,詢問者的意圖不是假定必須首先調用.read()。

@Markamery,這個問題的措詞很差("相當沒有意義"),所以你猜到了它的意圖("對我來說很明顯"),然后重新修改它來匹配。我的解釋不同。很明顯,在Harpals澄清之前,除非他澄清,否則我們只有原始措辭加上他接受了一個答案(即"seek(0)"),這對我來說清楚地表明他已經閱讀了文件,至少超過了第一行。

你應該刪除這個答案。這不是正確的方法,而且可以欺騙人們。

@謝謝你的意見,但最初的問題是這樣寫的:我的回答是一個技術上有效的回答,而且是一個旨在幫助描述的情況的回答。我確實更新了它,表明這個問題被編輯了,措辭也改變了,我認為我的澄清有助于防止任何人"欺騙"。

:)好吧,我是個懶惰的程序員。我在網上查找了代碼,然后匆忙使用它來嘗試運行一些東西來進行演示。出于某種原因,我的代碼非常慢!花了一段時間才發現,這東西是加載到內存4GB,然后才采取第一行!Tor的答案實際上是"正確的"答案。做事情的方法很多。有些更好。有些更糟。這是一個糟糕的結局。把它放在最上面而不是Tor的答案,這讓我很困擾。我以為因為它在上面,所以最好,所以我沒有檢查…廢話。我想大部分是我的懶惰。

順便問一下,問題是"只讀取文件的第一行?",而不是"如何讀取整個文件并獲取第一行?"

@唐,不,你錯了。當我回答時,問題是"在讀取一個文件之后,如何告訴python只讀取第一行?"我認為這意味著這個家伙已經閱讀了整個文件內容,想知道如何提取第一行。自從這個問題被編輯后,我就非常清楚了。

我認為你把這個問題解釋錯了。"只讀取第一行"……不是"只取第一行",它可以用任何一種方式解釋。我仍然認為應該放棄這個答案的排名。你能想到一個場景,你想用這個來代替托爾的答案嗎?

@唐卡,真的,我們在浪費所有還在讀書的人的時間。你投了反對票,這就是你真正需要做的。至于"任何一種解釋方式",是的,它可能是,這就是為什么我在提供一個選擇一個有效解釋的答案時沒有錯,即使它不可能是最好的解釋。最后,是的,如果所有的數據都是由于其他原因被讀取的,但是您仍然只需要第一行(并且您是一個新手程序員),那么您可能會問這個問題,并發現我的答案很有幫助。請就這樣吧…沒有人會被它迷惑。

解決方案1:

with open('input_file.txt') as input_file:

lines=input_file.readlines()

for line_no, line in enumerate(lines):

if line_no == 0:

print(line)

break

lines包含來自input_file.txt的所有行。

line_no將給出文件中的行號。

如果line_no為0,第一行將作為索引打印。從0開始

同樣,如果你想要第二行,你可以寫if line_no==1。

解決方案2:

with open('input_file.txt') as input_file:

lines=input_file.readlines()

first_line=lines[0]

print(first_line)

lines[0]是第一行。

同樣,lines[1]是第二行

解決方案3:

打印第一行N行。用任何數字替換N。如果你想要第一行,那么n=1

from itertools import islice

with open('my_file.txt','r') as my_file:

head = list(islice(my_file, N))

print(head)

這是unix命令head的等效代碼。

解決方案4:

with open('input.txt', 'r') as fin:

head, tail = fin.read().split('

', 1)

print(head)

#print(tail)

f1 = open("input1.txt","r")

print(f1.readline())

在五年多的時間里,有很多答案都包含著這種方法。你什么都沒做,只是通過添加另一個來制造噪音。

總結

以上是生活随笔為你收集整理的python只读打开文件_关于python:只读文件的第一行?的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。