python
  • python-2.7
  • subprocess
  • 2016-12-21 69 views 1 likes 
    1

    我正在嘗試將以下子流程調用的輸出轉換爲字典或列表中的結果。然後,我要從那裏提取一些數據。在字典或列表中導出子流程輸出結果

    arg_list = [] 
    action ="QuotaInfo" 
    arg_list.append(upnp_path) 
    arg_list.append(' --action=') 
    arg_list.append(action) 
    arg_list.append(' --ip=') 
    arg_list.append('10.10.8.89') 
    
    
    # x = Popen(arg_list, shell=True) 
    
    output = list() 
    
    y = subprocess.call(["python", arg_list]) 
    

    輸出

    ***************Retrieving the QUOTA info for : 10.10.8.89 *************** 
    INFO::root:Trying main server 10.10.8.40:9000::224 
    DEBUG::root:Cookies: 'TWISTED_SESSION=988fedac2b7f62cc280c6865f74d9600'::107 
    containerId : 3 
    title : pvr 
    quotaInfoName : user 
    quotaInfoUsedsize : 17767158 
    containerRestricted : 0 
    quotaInfoMaxsize : 239221162 
    class : object.container 
    containerParentid : 0 
    INFO::root:Trying main server 10.10.8.40:9000::224 
    DEBUG::root:Cookies: 'TWISTED_SESSION=988fedac2b7f62cc280c6865f74d9600'::107 
    

    我怎樣才能做到這一點?謝謝

    +0

    你的錯誤是什麼?如果你想輸出,你應該看看'subprocess.Popen'。 –

    +0

    Hi @ Jean-FrançoisFabre我想在字典或列表中保存輸出。我可以在cmd屏幕上獲得該輸出。我的問題是如何將這些數據轉換爲字典或列表? – pydev

    +0

    字典是什麼?關鍵和價值是什麼? –

    回答

    0

    剛纔自己找到答案。

    from subprocess import Popen, PIPE, STDOUT 
    
    
    
    p = Popen(command, shell=True, stdin=PIPE, stdout=PIPE, stderr=STDOUT) 
        output = p.stdout.read() 
    
        print output 
    
    +1

    由於您沒有任何東西需要管道,因此我會省略'stdin = PIPE'。並且不要忘記'p.wait()'等待&得到命令返回代碼 –

    +0

    @ Jean-FrançoisFabre非常感謝您的幫助Jean。 – pydev

    相關問題