How to store the result of an executed shell command in a variable in python?

前端 未结 5 1693
执笔经年
执笔经年 2020-12-13 06:20

I need to store the result of a shell command that I executed in a variable, but I couldn\'t get it working. I tried like:

import os    

call = os.system(\"         


        
5条回答
  •  轻奢々
    轻奢々 (楼主)
    2020-12-13 07:24

    Use the subprocess module instead:

    import subprocess
    output = subprocess.check_output("cat syscall_list.txt | grep f89e7000 | awk '{print $2}'", shell=True)
    

    Edit: this is new in Python 2.7. In earlier versions this should work (with the command rewritten as shown below):

    import subprocess
    output = subprocess.Popen(['awk', '/f89e7000/ {print $2}', 'syscall_list.txt'], stdout=subprocess.PIPE).communicate()[0]
    

    As a side note, you can rewrite

    cat syscall_list.txt | grep f89e7000
    

    To

    grep f89e7000 syscall_list.txt
    

    And you can even replace the entire statement with a single awk script:

    awk '/f89e7000/ {print $2}' syscall_list.txt
    

    Leading to:

    import subprocess
    output = subprocess.check_output(['awk', '/f89e7000/ {print $2}', 'syscall_list.txt'])
    

提交回复
热议问题