Python執行shell命令相關

導語

在編寫python腳本的時候,偶爾想調用shell命令來執行一些操作會比較方便些。python中目前有多種方法可以達到這樣的目的,有的僅僅是執行命令不返回需要的結果,有些可以返回執行的結果保存到變量,以便于后續操作

涉及到的模塊有 os.systemcommandssubprocess


下面以具體的例子說明情況

#!/usr/bin/env bash 

import os
import commands
import subprocess

# -- os.system() --
# execute shell command in sub-terminal and can not get the return result
result1 = os.system('ls -l .')
print('result: ')
print(result1)
print('----------------------------------------')

# -- os.popen() --
# execute and can get the return result
result2 = os.popen('ls -l')
# file type
print('type: ', type(result2))

result3 = os.popen('ls -l').readlines()
# list file
print('type: ', type(result3))
print('result: ')
print(result3)
print('----------------------------------------')

# -- commands --
# import commands
# method:
#   getoutput
#   getstatusoutput
result4 = commands.getoutput('ls -l')
print('result: ')
print(result4)
print('=======')
result5_status, result5_output = commands.getstatusoutput('ls -l')
print('status: ', result5_status)
print('output: ')
print(result5_output)
print('----------------------------------------')



# subprocess
# import subprocess
# method:
#   call(["cmd","arg1", "arg2"], shell=True) refer to os.system()
#   Popen("cmd", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT) refer to os.popen
#
#result6 = subprocess.call("ls -l", shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
p = subprocess.Popen('ls *.txt', shell=True, stdout=subprocess.PIPE, stderr=subprocess.STDOUT)
print(p.stdout.readlines())

for line in p.stdout.readlines():
    print line,

## wait for child process to terminate, and turn returncode
retval = p.wait()
##  if ok, return 0
print(retval)

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 其實應該搞清楚何時要用python寫腳本,何時用shell例如對于系統操作的業務,我傾向于用shell awk ...
    帥子鍋閱讀 12,986評論 0 6
  • # Python 資源大全中文版 我想很多程序員應該記得 GitHub 上有一個 Awesome - XXX 系列...
    aimaile閱讀 26,594評論 6 427
  • From: https://blog.linuxeye.com/375.html 從Python 2.4開始,Py...
    pzka158閱讀 3,024評論 0 2
  • 荷花大家都會不陌生,說起描寫荷花的詩句,想必大家都會想到愛蓮說中的“予獨愛蓮之出淤泥而不染,濯清漣而不妖”一句詩。...
    新眸閱讀 609評論 0 2
  • 塊元素:主要特征是會產生換行效果,自動與其他元素分離成兩行;通常可以作為容器在內部添加其他元素。 內聯元素:不會產...
    frankisbaby閱讀 601評論 0 0