逐行读取python 3.4上的文本文件

时间:2015-10-11 03:16:33

标签: python python-3.x

我在python上将一本书保存为文本文件,我试图逐行读取文件。我试过用这个

def print_file1(filename):
    f = open(filename, 't')
    for line in f:
        print(line, end = '')
    f.close() #optional

但是,每当我尝试运行它时,它都不起作用。 这就是我的输出

runfile('/Users/kareemahokunlola/example.py', wdir='/Users/kareemahokunlola')

2 个答案:

答案 0 :(得分:4)

本身't'不是打开文件的有效模式。

您可以将模式指定为rt。如果省略该模式,它将默认为'r'(以文本模式阅读),这可能足以满足您的需要。 (如果您的文件包含二进制数据,则可以将'b'添加到模式中。)

我也会考虑使用with声明来编写它:

def print_file1(filename):
    with open(filename) as f:
        for line in f:
            print(line, end = '')

这样做的好处是您不必担心关闭文件 - 无论出于何种原因,它都会在退出with语句时自动发生。

<强>更新

所以你在Spyder IDE中执行这段代码?当您成功运行脚本时,Spyder将显示:

runfile('/Users/kareemahokunlola/example.py', wdir='/Users/kareemahokunlola')

在控制台中。这就是您所看到的,因此您的脚本正在运行而没有错误。

有几种可能的解释:

  1. 您没有从您的内部调用print_file1()函数 脚本。该脚本运行时没有错误,但不显示该文件 因为没有调用print_file1()。这是最有可能的 解释因为你试图打开的原始代码 模式't'的文件将引发异常和异常 将被记录到控制台。但是没有显示错误,因此很可能实际上没有调用该函数。
  2. 您正在呼叫print_file1(),但该文件为空。在这种情况下 &#34; runfile()&#34;将显示消息,因为脚本已运行 成功,但没有看到任何其他因为文件是空的。
  3. 在定义函数后尝试添加对print_file1()的调用:

    def print_file1(filename):
        with open(filename) as f:
            for line in f:
                print(line, end = '')
    
    # N.B. call the function...
    print_file1('/etc/hosts')
    

答案 1 :(得分:0)

我会把钱投入以下声明:

print(line, end = '')
            ^^^^^^^^

你告诉Python打印没有换行的行,有效地将所有单独的行连接到屏幕上的一行。

请参阅https://docs.python.org/3/library/functions.html#print