【问题标题】:Unexpected output of PopenPopen 的意外输出
【发布时间】:2020-04-30 21:31:17
【问题描述】:

我正在使用来自subprocessPopen 构造函数来捕获我在python 脚本中运行的命令的输出:

import os
from subprocess import Popen, PIPE

p = Popen(["my-cli", "ls", "/mypics/"], stdin=PIPE, stdout=PIPE,stderr=PIPE)
output, err = p.communicate()

print(output)
print(output.count('jpg'))

我的目标是将输出文件名保存为字符串数组。

但是,当我打印output 时,我注意到脚本不是将文件名保存为字符串,而是将每个文件的每个字节(字母)保存为字符串。因此,打印输出如下所示

f

l
电子
.
j
p
g

1

所以不是打印一个文件名file.jpg,而是打印出组成文件名的 8 个单独字符。但是直接在终端中运行ls 命令只会逐行列出文件名。

我在这个脚本中做错了什么,这里的解决方法是什么?我正在运行 Python 2.7 任何建议将不胜感激

【问题讨论】:

    标签: python subprocess popen


    【解决方案1】:

    Popen array 中的 my-cli 是什么。我认为在每个字符输出之后附加一些新行字符。只需删除 my-cli 即可。

    p = Popen(["ls", "/mypics/"], stdin=PIPE, stdout=PIPE,stderr=PIPE)
    

    我希望这对你有用。

    【讨论】:

    • 需要 cli 命令,因为我正在使用一种来自 cli 本身的方法,称为 ls
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-13
    • 2020-02-21
    • 2012-05-06
    • 2019-03-21
    • 2019-08-29
    • 2012-11-05
    相关资源
    最近更新 更多