2017-06-19 112 views
0

爲什麼下面的代碼1工作而code2不工作?爲什麼一件事情有效,另一件事卻不行?

代碼1:

#Read from a file 

readMe = open('WriteToFile.txt', 'r').read() 
print(readMe) 

splitMe = readMe.split('\n') 

print(splitMe) 

代碼2:

#Read from a file 

readMe = open('WriteToFile.txt', 'r') 
print(readMe.read()) 

splitMe = readMe.read().split('\n') 

print(splitMe) 

我收到了碼2以下的輸出: enter image description here

,而我所要的輸出像代碼1: enter image description here

回答

0

一旦你調用read()去瀏覽一個文件,文件「指針」(有點像光標)停留在文件末尾,並且再次調用read()什麼都不做,因爲你已經在最後了(沒有什麼可讀的) 。您需要將指針移動到file.seek(0)的文件開頭。

然而,最好是剛讀一次爲一個字符串,並使用:

readMe = open('WriteToFile.txt', 'r') 
content = readMe.read() 

print(content) 

splitMe = content.split('\n') 

print(splitMe) 

更妙的是使用with聲明,它會自動關閉該文件爲您提供:

with open('WriteToFile.txt', 'r') as file: 
    content = file.read() 
print(content) 
lines = content.split('\n') 
print(lines) 

雖然如果您的最終目標是獲取線條,您可以使用readlines()

with open('WriteToFile.txt', 'r') as file: 
    lines = file.readlines() 
print(lines)