【问题标题】:Python subprocess/Popen stdout is truncatedPython 子进程/Popen 标准输出被截断
【发布时间】:2023-04-06 21:15:02
【问题描述】:

Popen stdout 的输出与从 Shell 运行命令或使用 os.system 不同:

cmd = ['git', 'diff', commitHash, '--stat']

print Popen(cmd, stdout=PIPE).stdout.read().strip()
os.system(' '.join(cmd))

Popen 的输出:

 src/tech/dalvik/sidebar.md                         |   10 -
 .../encryption/android_crypto_implementation.md    |  359 --
 src/tech/encryption/index.md                       |   22 -
 src/tech/encryption/sidebar.md                     |    9 -
 src/tech/index.md                                  |   58 -
 src/tech/nfc/index.md                              |   25 -
 src/tech/nfc/sidebar.md                            |    7 -
 src/tech/sidebar.md                                |    5 -
 templates/footer                                   |    3 +-
 templates/includes                                 |    2 +-
 templates/sidebar                                  |    2 +-
 257 files changed, 32311 insertions(+), 11358 deletions(-)

os.system 的输出(与从 Shell 运行相同)

 src/tech/dalvik/sidebar.md                                         |   10 -
 src/tech/encryption/android_crypto_implementation.md               |  359 ---------
 src/tech/encryption/index.md                                       |   22 -
 src/tech/encryption/sidebar.md                                     |    9 -
 src/tech/index.md                                                  |   58 --
 src/tech/nfc/index.md                                              |   25 -
 src/tech/nfc/sidebar.md                                            |    7 -
 src/tech/sidebar.md                                                |    5 -
 templates/footer                                                   |    3 +-
 templates/includes                                                 |    2 +-
 templates/sidebar                                                  |    2 +-
 257 files changed, 32311 insertions(+), 11358 deletions(-)

我怎样才能让subprocess.Popenos.system 一样工作?

我在这里发现了一个类似的问题:Stdout captured from pipe in Python is truncated,但是设置LANG 环境变量似乎不起作用。

谢谢!

【问题讨论】:

    标签:
    python
    pipe
    subprocess
    popen