Re: [問題] os.system問題??

看板Python作者 (哇哇哇○( ̄﹏ ̄)○)時間17年前 (2008/07/14 23:42), 編輯推噓0(001)
留言1則, 1人參與, 最新討論串3/3 (看更多)
: 而且還可以繼續按按鈕的嗎? : 請幫幫忙!! : 很需要解決這個問題 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 125.230.101.120

07/10 16:11,
推~
07/10 16:11

07/12 11:28,
讚! 謝謝分享
07/12 11:28

07/14 13:59,
這跟那些popen有什麼樣子的差異?
07/14 13:59
這個 subprocess 好像是看某前輩的 blog 才得知的東西... 這模組提供了更高階的 API,來試圖隱藏不同平台呼叫 process 的細節。 在 http://docs.python.org/lib/module-subprocess.html 有提到它試圖取代以下常用的呼叫: os.system os.spawn* os.popen* popen2.* commands.* 至於詳細的用法,可以參考: http://docs.python.org/lib/node533.html 會藉由簡單範例示範每種不同的呼叫方式... 而在原來的這個問題當中,原 po 一直遇到會出現一個終端機的問題 那是因為如果使用 os.system('test blah blah') 的呼叫,在 windows 會有以下行為: 你的 python 程式 ->(呼叫) cmd.exe ->(呼叫並傳參數 blah blah) test 而在 unix 會有以下行為: 你的 python 程式 ->(呼叫) shell ->(呼叫並傳參數 blah blah) 你想執行的程式 以上如果是使用 subprocess,則語法是 subprocess.call('test blah blah', shell=True) 其中 shell=True 若沒有指定則預設是 False 所以為了要避免出現終端機視窗,最好是可以跳過 cmd.exe/shell 直接呼叫命令 也就是流程變成: 你的 python 程式 ->(呼叫並傳參數 blah blah) test 那使用 subprocess 則就是(預設是 shell=False 所以在這邊省略): subprocess.call('test blah blah'.split()) 至於為何要切成 list 這個就扯到 popen / exec* 這一系列的呼叫實際運作的過程了 其實站在使用者立場可以不用管它,你就記得要切成 list 就對了 -- 廢話好像太多了 囧> -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.127.40.50 ※ 編輯: wawawa 來自: 140.127.40.50 (07/14 23:46) ※ 編輯: wawawa 來自: 140.127.40.50 (07/14 23:47)

07/14 23:51, , 1F
我好像是從 yungyuc 大的 blog 看來的...有點忘了抱歉 Orz
07/14 23:51, 1F
文章代碼(AID): #18UtFsGx (Python)
討論串 (同標題文章)
本文引述了以下文章的的內容:
完整討論串 (本文為第 3 之 3 篇):
文章代碼(AID): #18UtFsGx (Python)