【问题标题】:To print Output of a program in a formatted version以格式化版本打印程序的输出
【发布时间】:2017-07-18 08:23:01
【问题描述】:

我想在我的程序中运行 objdump -d [sample] 命令,然后我想以格式化版本显示它的输出。例如,我想在其输出的每一行中使用一个选项卡显示其输出。我该怎么做?

 cmd1 = "objdump -d "
 name = "sample"
 output = os.system(str(cmd1) + str(name))
 print(output)

【问题讨论】:

  • os.system 不返回“输出”。它返回整数返回码。所以,对于初学者来说,不好的选择。检查它的文档。

标签: python linux objdump


【解决方案1】:

你可以使用subprocess.check_output:

In [864]: output = subprocess.check_output(['objdump -d a.out'], shell=True)

这将返回输出的字节字符串。然后您可以使用str.decode 来显示您的数据。如果你想用制表符缩进,你可以在换行符上拆分,然后逐行打印,如下所示:

In [870]: for line in output.decode().split('\n'):
     ...:     print('\t', line)
     ...:     

     a.out: file format Mach-O 64-bit x86-64

     Disassembly of section __TEXT,__text:
     __text:
     100000fa0: 55  pushq   %rbp
     100000fa1: 48 89 e5    movq    %rsp, %rbp
     100000fa4: 31 c0   xorl    %eax, %eax
     100000fa6: c7 45 fc 00 00 00 00    movl    $0, -4(%rbp)
     100000fad: 5d  popq    %rbp
     100000fae: c3  retq

     _main:
     100000fa0: 55  pushq   %rbp
     100000fa1: 48 89 e5    movq    %rsp, %rbp
     100000fa4: 31 c0   xorl    %eax, %eax
     100000fa6: c7 45 fc 00 00 00 00    movl    $0, -4(%rbp)
     100000fad: 5d  popq    %rbp
     100000fae: c3  retq

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多