首页 > 解决方案 > Popen 的意外输出

问题描述

我正在使用Popen构造函数 fromsubprocess来捕获我在 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,我注意到脚本不是将文件名保存为字符串,而是将每个文件的每个字节(字母)保存为字符串。因此,打印输出看起来像这样

文件 。
_
_
_ Ĵ _ _



1

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

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

标签: pythonsubprocesspopen

解决方案


my-cliPopen array. 我认为在每个字符输出之后附加一些新行字符。只需删除它my-cli,这可能会为您分叉。

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

我希望这对你有用。


推荐阅读