python呼叫系統指令碼自動輸入 yes no

2021-09-26 19:09:45 字數 831 閱讀 6080

指令碼:

import shlex

import subprocess

args=shlex.split('sh /mysqlbackup/wn19testcdb1002/my_restore.sh')

p=subprocess.popen(args,stdin=subprocess.pipe)

a=p.stdin.write('yes')

解讀:

shlex.split('sh /mysqlbackup/wn19testcdb1002/my_restore.sh') 生成序列化引數列表['sh','/mysqlbackup/wn19testcdb1002/my_restore.sh']

subprocess:來產生子程序,並連線到子程序的標準輸入/輸出/錯誤中去,還可以得到子程序的返回值。

subprocess意在替代其他幾個老的模組或者函式,比如:os.system os.spawn* os.popen* popen2.* commands.*

subprocess.popen 相當於使用os.execvp()來執行子程式。

args一般要是乙個【列表】。如果args是個字串的話,會被當做是可執行檔案的路徑,這樣就不能傳入任何引數了。

stdin stdout和stderr,分別表示子程式的標準輸入、標準輸出和標準錯誤。可選的值有pipe或者乙個有效的檔案描述符(其實是個正整數)或者乙個檔案物件,還有none。

如果是pipe,則表示需要建立乙個新的管道,如果是none,不會做任何重定向工作,子程序的檔案描述符會繼承父程序的。另外,stderr的值還可以是stdout,表示子程序的標準錯誤也輸出到標準輸出。

Python 呼叫shell指令碼

python呼叫shell指令碼,有兩種方法 os.system cmd 或os.popen cmd 前者返回值是指令碼的退出狀態碼,後者的返回值是指令碼執行過程中的輸出內容。實際使用時視需求情況而選擇。現假定有乙個shell指令碼test.sh bin bash 1.echo hello worl...

Python呼叫MATLAB指令碼

可以通過python的介面呼叫多種語言,這非常適合於同時使用多種工具 多個平台的深度學習任務。python呼叫matlab的指令碼或函式,可以參考matlab官方說明文件get started with matlab engine api for python。簡言之,首先在matlab中安裝pyt...

Qt呼叫Python指令碼

最近在做乙個智慧型汽車中控儀表系統 在開發好的qt介面裡想呼叫.py指令碼 就上網查了一下如何呼叫 1.首先把py指令碼新增到專案工程裡面去 2.在cpp檔案中寫這樣一段函式 py initialize 初始化 if py isinitialized return 匯入模組 pyrun string...