2014-03-19 92 views
2

我試圖下調一檔的前n行過一個文件,我計算n和分配一個值從MYVARIABLE子傳遞變量到子進程調用

command = "tail -n +"myvariable" test.txt >> testmod.txt" 
call(command) 

我已經導入呼叫。但是我在myvariable中遇到了一個語法錯誤。

+1

你得到一個語法錯誤,因爲你這不是有效的Python碼。 –

+2

你的連接應該這樣完成:'cmd =「...」+ myvar +「...」' – svvac

回答

5

有兩件事情錯在這裏:

  1. 你的字符串連接語法都是錯誤的;這不是有效的Python。你可能想使用這樣的:在這裏我認爲myvariable是一個整數,而不是字符串已經

    command = "tail -n " + str(myvariable) + " test.txt >> testmod.txt" 
    

    使用字符串格式化會在這裏更容易閱讀:

    command = "tail -n {} test.txt >> testmod.txt".format(myvariable) 
    

    其中str.format()方法將字符串版本的myvariable爲您更換{}

  2. 你需要告訴subprocess.call()通過shell運行該命令,因爲你使用>>,僅殼功能:

    call(command, shell=True) 
    
+0

謝謝,我需要在我的Python上工作。 – oxidising

+0

@Gar:你也可以使用列表參數:'rc = call([「tail」,「-n」,str(myvariable),「test.txt」],stdout = open('testmod.txt',' A'))' – jfs