Sou*_*urD 12 python file input
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()
Run Code Online (Sandbox Code Playgroud)
masters.txt有一个昵称列表,如何一次打印文件中的每一行?我只打印了第一个昵称的代码.你的帮助将是欣赏它.谢谢.
mgi*_*uca 25
首先,正如@ 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()
Run Code Online (Sandbox Code Playgroud)
最后,你指的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')
Run Code Online (Sandbox Code Playgroud)
不要在每次循环和打印行而不是行时关闭它.还可以使用readlines来获取所有行.
EDIT删除了我的另一个答案 - 本次讨论中的另一个是比我的更好的替代方案,所以没有理由复制它.
还用read()剥离了\n.splitlines()
你可以试试看。它不会一次(使用文件对象的迭代器)一次将所有f读入内存,并且在代码离开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')
Run Code Online (Sandbox Code Playgroud)
如果您使用的是旧版本的python(2.6版之前),则必须
from __future__ import with_statement
Run Code Online (Sandbox Code Playgroud)
循环遍历文件。
f = open("masters.txt")
lines = f.readlines()
for line in lines:
print line
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
95557 次 |
| 最近记录: |