2016-12-29 82 views
0

我想eval(open('file1').readline())并将此行写入另一个文件,例如:eval(open('file1').readline().write('file2'))但这显然不起作用,因为在写入之前必须打开file2是否有可能连接python eval()中的几个命令?

那么是否可以连接命令eval()

感谢

+0

你想把'eval()'的结果保存在第二个文件中吗? –

+0

你为什么要''评估'write'的返回值?我想你想对你读的那行进行评估,但是你应该这样做,并且在你评估过该行后写文件。 – trincot

回答

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