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

Ich kann es nicht erklären, warum Fehler auftritt. Ich meine, es ist reine String-Operation, oder? Jede Hilfe könnte geschätzt werden.mit Python mit bash

+2

Meintest du 'os.popen ("% s "%" ls ")'? Was Sie jetzt haben, versucht% 'auf * das Ergebnis von *' os.popen ("% s") 'anzuwenden (daher '' 'file''' im Fehler) und' "ls" '(' '' str'' '). Und was hat das mit Bash zu tun ?! – Biffen

+0

ist ls der Dateiname oder der Befehl, den Sie in bash ausführen wollen, um hier Ergebnisse zu erhalten? – minocha

+0

Du hast Recht, die% str sollte nach "% s" berührt werden, kann nicht getrennt werden oder kommt Fehler ... – puming

Antwort

6

Python ist großartig wegen der interaktiven Shell.

Versuchen:

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

Sie können den Fehler vor Ihnen sehen. Das Ergebnis von os.popen ist eine Datei. Sie wenden dann eine Zeichenfolgenoperation an.

übersetzen, was Sie haben, was ich denke, Sie zu tun versuchen, versuchen:

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

Oder direkt:

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

Aber die subprocess module ist in der Regel bevorzugt:

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

Oh ... Ja, ich vermasselt ... Danke sehr ... haha ​​ – puming

+0

@PuMing .Z: oder nur 'os.listdir()'. – jfs

+0

@ J.F.Sebastian: Ja. das ist eine bessere Wahl. Vielen Dank. – puming