簡體   English   中英

從Python腳本執行shell命令

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM