如何输出python文件中的每一行

2024-06-16 07:09:57 发布

您现在位置: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有一个昵称列表,如何一次打印文件中的每一行?。我的代码只打印第一个昵称。谢谢你的帮助。谢谢。


Tags: intxtsendfordatareadlineifline
3条回答

你可能想要这样的东西:

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()

首先,正如@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语句的内容。

你可以试试这个。它不会一次将所有f读入内存(使用file对象的迭代器),并且在代码离开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

相关问题 更多 >