我在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')
答案 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')
在控制台中。这就是您所看到的,因此您的脚本正在运行而没有错误。
有几种可能的解释:
print_file1()
函数
脚本。该脚本运行时没有错误,但不显示该文件
因为没有调用print_file1()
。这是最有可能的
解释因为你试图打开的原始代码
模式't'
的文件将引发异常和异常
将被记录到控制台。但是没有显示错误,因此很可能实际上没有调用该函数。print_file1()
,但该文件为空。在这种情况下
&#34; runfile()&#34;将显示消息,因为脚本已运行
成功,但没有看到任何其他因为文件是空的。在定义函数后尝试添加对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打印没有换行的行,有效地将所有单独的行连接到屏幕上的一行。