2016-12-29 110 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垃圾收集器關閉文件,這可能需要比預期更長的時間。

相關問題