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有一个昵称列表,如何一次打印文件中的每一行?我只打印了第一个昵称的代码。你的帮助将是欣赏它。感谢。
答案 0 :(得分:23)
首先,正如@ 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
语句的内容。
答案 1 :(得分:7)
您可能需要以下内容:
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来获取所有行。
编辑删除了我的其他答案 - 本次讨论中的另一个是比我更好的替代方案,因此没有理由复制它。
还使用read()。splitlines()
剥离\ n答案 2 :(得分:4)
你可以试试这个。它不会立即将所有内容读入内存(使用文件对象的迭代器),并在代码离开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
答案 3 :(得分:3)
循环浏览文件。
f = open("masters.txt")
lines = f.readlines()
for line in lines:
print line
答案 4 :(得分:0)
你试过吗
for line in open("masters", "r").readlines(): print line
readline()
另一方面,只读“一行”
readlines()
读取整行并给出所有行的列表。