標籤:

Python 關於讀寫txt的問題?

之前想用xml,但是我完全不懂,所以就放棄了,自己研究了一會txt,於是Python可以讀取txt了,但是我想做一個

if a.readlines() == ["0"]:

print "a"

elif a.readlines() == ["1"]:

print "b"

else:

print "Try Again"

結果運行的時候,txt文件內容改成0,結果是print "a",但是當我把txt文件內容改成1的時候,他卻運行了else的print "Try Again",我看到了 我是一個菜鳥,剛學python,跪求python讀取一個txt文件 這篇帖子,於是我做了如下更改:

#if a.readlines() == ["0"]:

# print "a"

if a.readlines() == ["1"]:

print "b"

else:

print "Try Again"

結果這次運行的結果是print "b",果然是因為「這是因為你先讀了f.readlines()之後,文件已經被讀到最後了,再讀一次就什麼都讀不出來」,Python是逐條運行的,所以會先運行一次

if裡面的」a.readlines()「,此時發現第一個不對,所以運行第二個,elif,但是此時txt文件已經讀到了最後,所以再讀就不可能是1(也就是["1"])了,就直接執行else。請問有什麼辦法能讓elif從頭讀取txt文件?


我想你需要的不是重新讀取

tmpFile = a.readlines()
if tmpFile == ["0"]:
print "a"
elif tmp ==["1"]:
print "b"
else:
"Try again"

每次都去 readlines 開銷很大的,特別當file很大時


用python數據處理模塊pandas,效率很高,比如讀取這種txt文件

只需要

import pandas as pd

movies_data = pd.read_table("./movies.txt", sep=",")
movies_data.head()

結果如下:

在pandas中進行數據的處理很方便。詳情請看官方文檔pandas: powerful Python data analysis toolkit


temp = list[f.readlines()]

將readlines存到一個變數裡面,

用temp做各種判斷


f.seek(0)


你要把讀到的內容存起來再判斷。

不然執行第二個if的時候讀到的是空的,自然不會匹配到 b。


上面幾個回答說的很清楚了,不需要從頭開始讀取文件,只需要把第一次讀取的內容存儲到一個變數中,進行判斷就可以了。如果非要說實現從頭開始讀取的文件的話,就先a.close(),再open文件一次唄。(個人感覺比較蠢的辦法)


for line in f.readlines():

"""do something"""


推薦閱讀:

Python Shell 中敲擊方向鍵顯示「^[[C^[[D」,原因是什麼?如何修復?
為什麼python代碼有時候在命令行下和Python Shell中執行的結果不一樣呢 ?
Python 曾經開發過哪些了不起的程序或遊戲?
Python分析中文文字有哪些方法,那些庫?
會了django還有必要學flask嗎?

TAG:Python | 編程 |