作者schemer (珍惜每分每秒)
看板Python
標題[問題] 使用subprocess的一些問題
時間Sun Jun 19 15:38:08 2016
想請問板上的大大,小弟在寫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