2015-12-14 96 views
0

好吧,所以我倒了这个网站,我找不到任何可行的东西。 这里是我的代码从文本文件中使用python一次打印一行

print("Type the filename") 
file_again = raw_input("> ") 

lines = [6] 
with open(file_again, 'r') as f: 
    lines = f.read().splitlines() 
for line in lines: 
    print line 

,但我无法得到它的行打印出来线和所有这将是在每行一个数字。我也想使用一个计数器,但是我无法正确理解这个语法。我试图枚举,但没有工作了很适合我

+2

您正在阅读一行'.read()',然后分割该行'.splitlines()'。使用'.readlines()'。 –

+0

该代码确实逐行打印出来。你需要在前面的行号?然后在枚举(行,1):'中尝试输入num。 – tdelaney

+0

您需要告诉我们您希望输出得到什么帮助。一个简单的描述...一个例子... – tdelaney

回答

1
print("Type the filename") 
file_again = raw_input("> ") 

with open(file_again, 'r') as f: 
    lines = f.readlines() 

for num, line in enumerate(lines, 1): 
    print "%s: %s" % (num, line) 

基本上,你有两个问题:

  1. 您需要循环线路。为此,请使用readlines(),它将返回列表中可以遍历的所有行。
  2. 您需要打印一个计数器和行值。为此,enumerate()将在for循环中简洁地为您提供一个计数器。然后,格式化打印的行以显示计数器和行值。
+0

非常感谢你。这就是我需要的。所以枚举完全起什么作用。 – Bryan

+0

它提供了一个计数器在指定的增量,并让你直接调用计数器。 https://docs.python.org/2/library/functions.html#enumerate – economy

+0

感谢很多人的知识就是力量... – Bryan

0

Python中的文件对象是迭代器。所以,你可以通过它们直接迭代:

from __future__ import print_function # get Python 3 printing in Python 2 

with open(file_again) as fobj: 
    for lineno, line in enumerate(fobj, 1): 
      print('{}: {}'.format(lineno, line), end='') 

end=''换行不添加到打印,因为每条线在其后面的新行了。

这种方法的优点是,您可以轻松处理大文件,因为您不需要一次读取整个文件。

相关问题