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

时间:2011-01-17 03:03:35

标签: 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()

masters.txt有一个昵称列表,如何一次打印文件中的每一行?我只打印了第一个昵称的代码。你的帮助将是欣赏它。感谢。

5 个答案:

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

读取整行并给出所有行的列表。