[英]Execute shell command from Python Script
我想從python腳本執行以下命令:
iw wlan0 scan | sed -e 's#(on wlan# (on wlan#g' | awk -f > scan.txt
我嘗試如下
from subprocess import call
call(["iw wlan0 scan | sed -e 's#(on wlan# (on wlan#g' | awk -f > scan.txt"])
但我得到一個錯誤
SyntaxError: EOL while scanning string literal
我怎樣才能做到這一點?
將shell=True
傳遞給subprocess.call
:
call("iw wlan0 scan | sed -e 's#(on wlan# (on wlan#g' | awk -f scan.txt", shell=True)
請注意, shell=True
並非總是安全的選項。
雖然設置shell=True
並刪除字符串周圍的列表括號將解決當前的問題,但是從Python運行sed
和Awk簡直是瘋狂。
import subprocess
iw = subprocess.check_output(['is', 'wlan0', 'scan']) # shell=False
with open('scan.txt', 'r') as w:
for line in iw.split('\n'):
line = line.replace('(on wlan', ' (on wlan')
# ... and whatever your Awk script does
w.write(line + '\n')
commands
模塊更易於使用:
import commands
output = commands.getoutput("iw wlan0 scan | sed -e 's#(on wlan# (on wlan#g' | awk -f scan.txt")
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.