[問題] 使用subprocess的一些問題

看板Python作者 (珍惜每分每秒)時間7年前 (2016/06/19 15:38), 編輯推噓0(009)
留言9則, 3人參與, 最新討論串1/1
想請問板上的大大,小弟在寫python的小工具出現的問題 首先,我有一個.py檔,內容主要是針對file system的操作或是 呼叫system command 一開始,我把全部的邏輯寫在一個.py檔裡,遇到要call system command的時候,就使用subprocess.Popen, 到目前為止,並無 太多問題 後來,因為功能的擴增,我把一些東西拆出去變成class或是 一些common utils, 問題就出現了 EX. main.py內容如下 from common import run_command if __init__ == '__main__': run_command('sudo', 'ls', '-al') common.py def run_command(cmd): subprocess.Popen(cmd) 則會出現無法執行狀況 後來,在另一個功能上,我把run_command包在class裡,就可以跑 Ex : main.py from feature import a if __init__ == '__main__': obj_a = a() a.run_command('sudo', 'ls', '-al') feature.py class a(object): def __init__(self): do_something def run_command(cmd): subprocess.popen(cmd) 原本把run_command這個很常用的method拉出去之後,就不能跑了 可是,在包成class之後,用起來就跟放在main.py裡一樣,沒什 麼問題 想請問大大們,為什麼會這樣? 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.34.79.110 ※ 文章網址: https://www.ptt.cc/bbs/Python/M.1466321891.A.0F6.html

06/19 15:40, , 1F
什麼不能跑? 錯誤訊息?
06/19 15:40, 1F

06/19 15:43, , 2F
應該是if __name__ == '__main__':吧
06/19 15:43, 2F

06/19 20:53, , 3F
程式碼內應該是 subprocess.Popen,Popen 你打成小寫
06/19 20:53, 3F

06/19 20:53, , 4F
另外 subprocess.Popen 你要執行命令有帶入參數
06/19 20:53, 4F

06/19 20:54, , 5F
要使用 list, subprocess.Popen(['sudo','ls','-a'])
06/19 20:54, 5F

06/19 20:56, , 6F
另外你的 run_command 寫法也無法正常處理
06/19 20:56, 6F

06/19 20:56, , 7F
run_command('sudo', 'ls', '-al') 這種語法
06/19 20:56, 7F

06/19 20:58, , 8F
真的要呼叫要用 run_command(['sudo', 'ls', '-al'])
06/19 20:58, 8F

06/20 22:49, , 9F
感謝兩位大大的回答,我明天把詳細的code貼上來好了
06/20 22:49, 9F
文章代碼(AID): #1NPalZ3s (Python)