我想eval(open('file1').readline())
并将此行写入另一个文件,例如:eval(open('file1').readline().write('file2'))
,但这显然不起作用,因为在写入之前必须打开file2
。
那么可以在eval()
中连接命令吗?
由于
答案 0 :(得分:0)
您可以将您的eval
表达式嵌套在另一个将其结果写入另一个文件的函数调用中:
open('file2', 'w').write(eval(open('file1').readline()))
但是将这么多东西打包成这样的一行通常是不好的风格。编写稍微更易于理解和调试的冗长代码通常会更好。例如,如果您从其中一个函数调用中获得异常,则很难分辨该行的哪个部分导致该问题。
这是一个多语句版本,我认为几乎在所有方面都更好:
with open('file1') as file1:
input_line = file1.readline()
output_line = eval(input_line)
with open('file2', 'w') as file2:
file2.write(output_line)
如果你从这段代码中得到一个异常,那么很明显哪个部分会导致它,因为单独的函数调用都在不同的行上。关闭它打开的文件也更好,使用with
语句在不需要文件时(每个缩进块的结尾)立即执行。单行版本依赖于Python垃圾收集器来关闭文件,这可能需要比预期更长的时间。