2016-05-22 67 views
0
import os 
ot = os.popen("%s") %"ls" 
TypeError: unsupported operand type(s) for %: 'file' and 'str' 

爲什麼出現錯誤,我不能弄明白。我的意思是它是純粹的字符串操作,對吧?任何幫助,不勝感激。使用bash使用Python

+2

你的意思是'os.popen(「%s」%ls「)?你現在得到的東西試圖將'%'應用於*'os.popen(「%s」)'(因此錯誤中的'''file''')和''ls''(' ' 'str''')。這和Bash有什麼關係? – Biffen

+0

是ls文件名還是您想在bash中執行的命令並在此處獲得結果? – minocha

+0

你說得對,%s應該在%s之後被觸及,不能分開或者出錯... – puming

回答

6

由於交互式shell,Python非常棒。

嘗試:

>>> import os 
>>> os.popen("%s") 
<open file '%s', mode 'r' at 0x10d020390> 

你可以看到在你面前的錯誤。 os.popen的結果是一個文件。然後,您正在對其應用字符串操作。

翻譯你要什麼,我認爲你正在嘗試做的,試試:

>>> os.popen("%s" % "ls").read() 

或者直接:

>>> os.popen("ls").read() 

subprocess module通常是首選:

>>> import subprocess 
>>> subprocess.check_output("ls") 
+0

哦...是的,我混在一起...非常感謝... haha​​ – puming

+0

@PuMing .Z:或者只是'os.listdir()'。 – jfs

+0

@ J.F.Sebastian:是的。這是一個更好的選擇。謝謝。 – puming