當前位置:首頁 » 編程語言 » python執行shell腳本

python執行shell腳本

發布時間: 2022-07-20 04:29:47

python shell怎麼使用

Python 中執行 Shell 命令有多種方法,stackoverflow 上有對這些方法進行比較的討論,Calling an external command in Python 指出使用subprocess模塊來實現更優。因此,本文說明如何使用subprocess模塊來實現 Shell 腳本的功能。
subprocess模塊提供多種方法來實現執行 Linux 的命令,例如subprocess.call()方法,subprocess.check_call()方法,等。這些方法都是對Popen類的封裝,故本文著重講述Popen類的使用。

執行 Shell 命令
可以通過向Popen()傳遞需要執行的命令來創建一個Popen對象,這樣,便會創建一個子進程來執行命令。例如:

child = subprocess.Popen(["ping","-c","5","leehao.me"])
1
上面的代碼會創建一個子進程來執行ping -c 5 leehao.me命令,這個命令採用列表的形式傳遞給Popen()方法。如果我們想直接採用ping -c 5 leehao.me字元串形式,可以添加shell=True來實現:

child = subprocess.Popen("ping -c 5 leehao.me", shell=True)
1
官方文檔指出由於安全原因故不建議使用shell=True,詳細說明可以參考官方文檔的描述。

等待子進程執行
子進程執行命令後,主進程並不會等待子進程執行。為了讓主進程等待子進程執行結束,需要顯示調用Popen.wait()方法。例如:

child = subprocess.Popen(["ping","-c","5","leehao.me"])
child.wait()
print 'parent finish'
1
2
3
這樣,主進程會等待子進程執行ping命令完畢後,才會列印出parent finish的輸出。

獲取執行結果
為了獲取Popen()子進程的輸出,可以使用Popen.communicate()方法,例如:

def subprocess_cmd(command):
process = subprocess.Popen(command,stdout=subprocess.PIPE, shell=True)
proc_stdout = process.communicate()[0].strip()
print proc_stdout

subprocess_cmd('echo leehao.me; echo www.leehao.me')
1
2
3
4
5
6
輸出:

leehao.me
www.leehao.me

process.communicate()方法可以實現主進程與子進程的通信。主進程可以通過它向子進程發送數據,也可以讀取子進程的輸出的數據。上面的例子中,我們在創建Popen對象時指定stdout=subprocess.PIPE,這樣主進程便可以讀取子進程的輸出。
communicate()方法返回一個元組:(stdoutdata, stderrdata),process.communicate()[0]即獲取子進程的標准輸出。
需要指出的是,調用communicate()方法後,主進程也會等待子進程執行完畢。
上面的例子中,子進程向標准輸出列印兩個字元串,主進程接收到了這些輸出,並列印出來。

Ⅱ python執行shell命令

Python執行Linux系統命令,即在Python腳本中調用Shell命令,具體有以下四種方法:

1、os.system

//僅僅在一個子終端運行系統命令,而不能獲取命令執行後的返回信息
system(command)->exit_status
Executethecommand(astring)inasubshell.
//如果再命令行下執行,結果直接列印出來:
>>>os.system('ls')
04101419778.CHMbashdocumentmediapy-djangovideo
11.
all-

2、os.popen

//該方法不但執行命令還返回執行後的信息對象
popen(command[,mode='r'[,bufsize]])->pipe
Openapipeto/.

3、使用模塊 subprocess

>>>importsubprocess
>>>subprocess.call(["cmd","arg1","arg2"],shell=True)
//獲取返回和輸出:
importsubprocess
p=subprocess.Popen('ls',shell=True,stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
forlineinp.stdout.readlines():
printline,
retval=p.wait()

4、使用模塊 commands

>>>importcommands
>>>dir(commands)
['__all__','__builtins__','__doc__','__file__','__name__','getoutput','getstatus','getstatusoutput','mk2arg','mkarg']
>>>commands.getoutput("date")
'WedJun1019:39:57CST2009'
>>>
>>>commands.getstatusoutput("date")
(0,'WedJun1019:40:41CST2009')

Ⅲ python怎麼調用shell腳本

直接使用python 後面跟python腳本的文件名就可以

例如:python tr.py就是在shell中執行pr.py這個python腳本,見下圖:

Ⅳ 我希望通過Python腳本實現多次執行shell命令

python腳本實現多次循環執行shell命令有三種方法,代碼如下:

#方法一
os.system
importos
i=0
whileTrue:
i=i+1
os.system("tcpreplay-ibond0-M5-l1oracle_request_response.cap")
print"+++++++++++++++++++++++++++++++"
print"times:",i
time.sleep(5)

#方法二
os.popen
importos
i=0
whileTrue:
i=i+1
printos.popen("tcpreplay-ibond0-M5-l1oracle_request_response.cap").read()
print"+++++++++++++++++++++++++++++++"
print"times:",i
time.sleep(60)

#方法三
output=Popen("xxx",shell=True).communicate()[0]
importos
fromsubprocessimport*
i=0
whileTrue:
i=i+1
output=Popen("tcpreplay-ibond0-M5-l1oracle/*",shell=True).communicate()[0]
print"+++++++++++++++++++++++++++++++"
print"times:",i
time.sleep(60)

Ⅳ 如何使用python執行遠程shell腳本

可以使用Python的Fabric包來完成這項任務。
既然是談到Shell腳本,系統應該是Linux/Unix的,遠程訪問,應該是ssh吧。

Fabric功能是將一個任務通過ssh在多台伺服器上執行,而每個任務可以是單條shell指令或是一段python腳本。
Fabric是將Python, Shell和SSH的功能很優雅地結合在了一起,同時自身又非常的輕量,適合大部分伺服器群的日常管理工作。

Ⅵ 如何用Python交互執行shell腳本

「交互執行shell腳本」是不是說代替人的手動輸入,比如sudo時輸入密碼的操作?
這種情況可以用Pexpect模塊。不是默認的,需要自己裝。

Ⅶ python中怎麼運行shell腳本

python中怎麼運行shell腳本?
system()
其中最後一個0是這個命令的返回值,為0表示命令執行成功。使用system無法將執行的結果保存起來。
popen()
獲取命令執行的結果,但是沒有命令的執行狀態,這樣可以將獲取的結果保存起來放到pst中。
commands
可以很方便的取得命令的輸出(包括標准和錯誤輸出)和執行狀態位。
commands.getoutput('ls')這個方法只返回執行結果result不返回狀態。
在python中調用shell腳本
hello.sh
下面的512是返回的狀態碼,如果eixt 0時則返回的是0.
shell腳本使用python腳本的參數
寫一個hello.sh腳本,需要傳入兩個參數:
執行結果如下:
在python腳本中調用shell腳本,並傳入參數,注意參數前後要有空格
執行python腳本
相關推薦:《Python教程》以上就是小編分享的關於python中怎麼運行shell腳本的詳細內容希望對大家有所幫助,更多有關python教程請關注環球青藤其它相關文章!

Ⅷ 如何執行python腳本 如何執行shell命令行

提問者說的是dos命令下的打開方式:方法是Python 文件全路徑名:當然也可以右鍵,選擇Edit With IDLE,然後直接按F5運行;或者雙擊。

Ⅸ python/shell腳本

  • shell應該屬於宏語言,顧名思義是系統的殼,方便與系統交互的在以下情況下,不使用shell,因為shell對此無能為力;如:跨平台,較復雜數學操作(如浮點運算,精確運算等),圖形化界面 GUI,I/O 或socket 介面,多維數組,對效率要求很高等。 sh...

Ⅹ 怎麼在python腳本中實現shell命令

最近有個需求就是頁面上執行shell命令,第一想到的就是os.system,

復制代碼 代碼如下:

os.system('cat /proc/cpuinfo')

但是發現頁面上列印的命令執行結果 0或者1,當然不滿足需求了。
嘗試第二種方案 os.popen()

復制代碼 代碼如下:

output = os.popen('cat /proc/cpuinfo')
print output.read()

通過 os.popen() 返回的是 file read 的對象,對其進行讀取 read() 的操作可以看到執行的輸出。但是無法讀取程序執行的返回值)
嘗試第三種方案 commands.getstatusoutput() 一個方法就可以獲得到返回值和輸出,非常好用。

復制代碼 代碼如下:

(status, output) = commands.getstatusoutput('cat /proc/cpuinfo')
print status, output

Python Document 中給的一個例子,

復制代碼 代碼如下:

>>> import commands
>>> commands.getstatusoutput('ls /bin/ls')
(0, '/bin/ls')
>>> commands.getstatusoutput('cat /bin/junk')
(256, 'cat: /bin/junk: No such file or directory')
>>> commands.getstatusoutput('/bin/junk')
(256, 'sh: /bin/junk: not found')
>>> commands.getoutput('ls /bin/ls')
'/bin/ls'
>>> commands.getstatus('/bin/ls')
'-rwxr-xr-x 1 root 13352 Oct 14 1994 /bin/ls'

最後頁面上還可以根據返回值來顯示命令執行結果。

熱點內容
本田雅閣第一代有哪些配置 發布:2025-03-02 14:12:10 瀏覽:459
java解壓縮工具類 發布:2025-03-02 14:06:53 瀏覽:917
台式電腦鑰匙密碼在哪裡看 發布:2025-03-02 13:52:46 瀏覽:839
如何把雲伺服器的ip轉到物理機 發布:2025-03-02 13:50:41 瀏覽:57
方舟編譯器適用第一代安卓手機 發布:2025-03-02 13:50:41 瀏覽:728
java公司網站源碼 發布:2025-03-02 13:43:29 瀏覽:892
電腦伺服器排版 發布:2025-03-02 13:40:57 瀏覽:159
海信公交調度系統密碼多少 發布:2025-03-02 13:17:42 瀏覽:61
java傭金 發布:2025-03-02 13:17:02 瀏覽:996
c編譯執行程序 發布:2025-03-02 13:15:23 瀏覽:969