看板 Python 關於我們 聯絡資訊
想請問板上的大大,小弟在寫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
alibuda174: 什麼不能跑? 錯誤訊息? 06/19 15:40
alibuda174: 應該是if __name__ == '__main__':吧 06/19 15:43
kenduest: 程式碼內應該是 subprocess.Popen,Popen 你打成小寫 06/19 20:53
kenduest: 另外 subprocess.Popen 你要執行命令有帶入參數 06/19 20:53
kenduest: 要使用 list, subprocess.Popen(['sudo','ls','-a']) 06/19 20:54
kenduest: 另外你的 run_command 寫法也無法正常處理 06/19 20:56
kenduest: run_command('sudo', 'ls', '-al') 這種語法 06/19 20:56
kenduest: 真的要呼叫要用 run_command(['sudo', 'ls', '-al']) 06/19 20:58
schemer: 感謝兩位大大的回答,我明天把詳細的code貼上來好了 06/20 22:49