2015-09-27 38 views
1

我想在python中使用子流程模塊來實現下面的代碼。Python子流程模塊和Awk

for i in range(9,17): 
    process=s.Popen("awk -v var=$(i) '$6==var' 1GT8.pdb", shell=True, stdout=s.PIPE) 

    matched=process.communicate()[0].split() 
    print matched 
正在被匹配

i是一個字符串的實體,而不是我想要的整數值。請幫助我。

+0

像往常一樣,如果您在純Python中實現了這種邏輯,代碼會更優雅*和*高效。 – tripleee

回答

1

Python不擴展字符串內部的變量,因此該命令將包含$(i)原樣。您必須明確地插入值,如下所示:

command = "awk '$6==\"{}\"' 1GT8.pdb".format(i) 
+1

我想,你需要轉義括號內的雙引號。 – logc

+0

@logc是的,謝謝。 – bereal