[英]how to output every line in a file python
if data.find('!masters') != -1:
f = open('masters.txt')
lines = f.readline()
for line in lines:
print lines
sck.send('PRIVMSG ' + chan + " " + str(lines) + '\r\n')
f.close()
masters.txt有一個昵稱列表,如何一次打印文件中的每一行? 我只打印了第一個昵稱的代碼。 你的幫助將是欣賞它。 謝謝。
首先,正如@ l33tnerd所說, f.close
應該在for循環之外。
其次,在循環之前,您只調用一次readline
。 那只讀第一行。 訣竅在於,在Python中,文件充當迭代器,因此您可以迭代文件而無需調用任何方法,這將為每次迭代提供一行:
if data.find('!masters') != -1:
f = open('masters.txt')
for line in f:
print line,
sck.send('PRIVMSG ' + chan + " " + line)
f.close()
最后,你指的是循環中的變量lines
; 我假設你的意思是指line
。
編輯:哦,你需要縮進if
語句的內容。
你可能想要這樣的東西:
if data.find('!masters') != -1:
f = open('masters.txt')
lines = f.read().splitlines()
f.close()
for line in lines:
print line
sck.send('PRIVMSG ' + chan + " " + str(line) + '\r\n')
不要在每次循環和打印行而不是行時關閉它。 還可以使用readlines來獲取所有行。
EDIT刪除了我的另一個答案 - 本次討論中的另一個是比我的更好的替代方案,所以沒有理由復制它。
還用read()剝離了\\ n。splitlines()
你可以試試這個。 它不會立即將所有內容讀入內存(使用文件對象的迭代器),並在代碼離開with塊時關閉文件。
if data.find('!masters') != -1:
with open('masters.txt', 'r') as f:
for line in f:
print line
sck.send('PRIVMSG ' + chan + " " + line + '\r\n')
如果您使用的是舊版本的python(2.6之前的版本),則必須擁有
from __future__ import with_statement
循環遍歷文件。
f = open("masters.txt")
lines = f.readlines()
for line in lines:
print line
你試過了嗎
for line in open("masters", "r").readlines(): print line
?
readline()
另一方面,只讀“一條線”
readlines()
讀取整行並給出所有行的列表。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.