你會如何獲得一個文件的第一行作爲Python的字符串?只讀取文件的第一行?
回答
這應做到:
f = open('myfile.txt')
first = f.readline()
infile = open('filename.txt', 'r')
firstLine = infile.readline()
你沒有關閉文件。 [用'with'解決方案](http://stackoverflow.com/a/1904455/855050)更好。 – becko 2015-12-21 18:43:19
使用.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及以上,並在Python 2.5,你需要使用from __future__ import with_statement
- 在Python 3,你應該指定你打開該文件的文件編碼。 Read more...
在Python 3中,如果文件是ascii或utf8,則不必指定文件編碼。如果不是,你應該在Python 2中將編碼指定爲codecs.open。 – Evpok 2012-07-19 12:15:02
@Evpok *「在Python 3中,如果文件是ascii或utf8,則不必指定文件編碼」* - 如果這只是嚴格正確的!現實情況稍微凌亂;如文檔中所述,所使用的默認編碼是依賴於平臺的(甚至可能在同一臺計算機上有所不同,具體取決於您如何啓動Python - 例如,我已經看到通過假設UTF-8稍後爆發當用'mod_wsgi'通過Apache運行時)。 – 2016-10-23 22:49:28
fline=open("myfile").readline().rstrip()
我來這裏尋找這個。特別是因爲'rstrip()'刪除了換行符。 – 2014-10-27 09:19:59
-1;這不會關閉文件,並且如果第一行包含除換行符本身之外的任何尾隨空格,則會返回不正確的結果。 – 2016-10-23 22:51:35
@MarkAmery:實際上,因爲文件句柄沒有分配給一個變量,所以它立即被垃圾收集,這會關閉文件。 (當然,使用上下文管理器的接受解決方案仍然好得多。) – acdr 2018-01-19 09:07:56
這裏其他的答案很多,但回答精確你問(前@MarkAmery去和編輯原來的問題,改變的意思)的問題:
>>> f = open('myfile.txt')
>>> data = f.read()
>>> # I'm assuming you had the above before asking the question
>>> first_line = data.split('\n', 1)[0]
在換句話說,如果你已經讀過文件(就像你說的那樣),並且在內存中有一大塊數據,那麼爲了有效地從它獲得第一行,對換行符做一個split(),一次,並從結果列表中獲取第一個元素。
請注意,這不包括在行尾的\n
字符,但我假設您不想要它(並且單行文件甚至可能沒有)。還要注意,儘管它非常短暫且快速,但它確實複製了數據,因此對於非常大的內存塊,您可能不會認爲它是「高效的」。與往常一樣,這取決於...
如果這是一個大文件,f.read()會嘗試將整個文件加載到內存中,這不是一個好主意。另一種方法是一次讀取一個字符,直到遇到換行符或EOF爲止 – randomThought 2009-12-15 03:04:57
實際上,所有其他答案都是比這更好的替代方案。通常使用readline()和朋友閱讀文件一次將加載整個塊,也許32K給予或帶走,並通過搜索找到下一個換行符。更快,更高效。我的回答只有在他已經*加載整個事情的時候纔會有用,在這種情況下,我們可以假設他將所有內容全部放在了一起可以。 – 2009-12-15 03:23:51
我不相信我改變了意思。在「讀取」整個文件之後,如何從文件中「讀取」第一行是沒有意義的。因此,對我來說很明顯,提問者的意圖不是假設必須首先調用'.read()'。 – 2016-10-17 20:18:34
要返回一個打開的文件的開頭,這樣做:
my_file.seek(0)
只是爲了更好的理解,這將是「my_file.seek(0) line = my_file.readline()」 – 2016-09-04 14:59:43
f1 = open("input1.txt", "r")
print(f1.readline())
五年內有多個答案,包含*正是這種方法*。你什麼都不做,只是增加另一個而產生噪音。 – 2015-07-05 14:44:36
- 1. 從文本文件只讀第一行
- 2. java txt文件讀取程序,只讀取txt文件的第一行
- 3. OpenFileDialog只讀取第一個文件
- 4. Buffered Reader只讀取文本文件中的第一行?
- 5. 如何只讀取CSV文件每一行的第一列
- 6. csv文件只讀第一行
- 7. 使用QDomDocument讀取xml文件只需獲取第一行
- 8. 如何只讀取文件的第一行
- 9. Java:讀取每行只有第一個字的.csv文件
- 10. 如何只讀取文件的第一行
- 11. 是否可以使用Actionscript只讀取文件的第一行?
- 12. 打開的文件只讀取一行
- 13. 使用XmlReader讀取xml文件只讀取第一個元素
- 14. 如何使用OleDbDataAdapter從Excel文件中只讀取第一行?
- 15. 當只編輯第一行時,linux sed讀取整個文件
- 16. getline函數只讀取第一行
- 17. numpy.fromfile是隻讀取第一行
- 18. htmlagilitypack只能讀取第一行
- 19. 掃描儀只讀取第一行
- 20. 爆炸在PHP只讀取第一行
- 21. bash讀取循環只讀取輸入變量的第一行
- 22. 文件讀取器只讀取文件的偶數行
- 23. Python readline - 只讀第一行
- 24. Dockerfile中只讀第一行
- 25. Apache Camel只讀第一行
- 26. fGetCsv只讀第一行?
- 27. 在Java中讀取CSV文件時出現問題。只讀第一行
- 28. MATLAB:如何讀取文本文件的每一行第N行?
- 29. 讀取文件中的第一行和最後一行
- 30. FileInputStream只讀取文件中的第一個字
如果您已經閱讀文件(「閱讀後在一個文件中「),你已經閱讀了第一行! (假設至少有一行) – 2009-12-15 02:50:50
請注意,現在的問題*與原來的含義不同。現在有些答案看起來很愚蠢,因爲他們考慮到「閱讀文件後」部分(已被刪除)。 – 2016-08-03 12:42:23