是否可以在python eval()中连接几个命令?

时间:2016-12-29 21:46:41

标签: python-2.7

我想eval(open('file1').readline())并将此行写入另一个文件,例如:eval(open('file1').readline().write('file2')),但这显然不起作用,因为在写入之前必须打开file2

那么可以在eval()中连接命令吗?

由于

1 个答案:

答案 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垃圾收集器来关闭文件,这可能需要比预期更长的时间。