как вывести каждую строку в файле 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) + 'rn')
f.close()
мастеров.txt имеет список ников, как я могу распечатать каждую строку из файла сразу?. Код, который у меня есть, печатает только первое прозвище. Ваша помощь будет признателен. Спасибо.
5 ответов
во-первых, как сказал @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
.
Edit: О, и вам нужно отступить содержимое 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, чтобы получить все строки.
редактировать удален мой другой ответ - другой в этом обсуждении является лучшей альтернативой, чем то, что у меня было, поэтому нет причин копировать его.
также снял \n с помощью read ().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')
Если вы используете более старую версию python (pre 2.6), вам нужно будет иметь
from __future__ import with_statement
ты
for line in open("masters", "r").readlines(): print line
?
readline()
только читает "строку", с другой стороны
readlines()
читает целые строки и дает вам список всех строк.