python - 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 任何建议将不胜感激
解决方案
你my-cli
的Popen array
. 我认为在每个字符输出之后附加一些新行字符。只需删除它my-cli
,这可能会为您分叉。
p = Popen(["ls", "/mypics/"], stdin=PIPE, stdout=PIPE,stderr=PIPE)
我希望这对你有用。
推荐阅读
- linux-kernel - 为什么我的各种用户程序突然终止而没有错误消息?
- c# - 从由 C++ 程序写出的 C# 文件中读取二进制对象
- python - “需要”(pyproject.toml),本地包处于可编辑模式
- python - 我正在尝试在 while 循环中创建一个列表,但我的循环不会重新启动
- neural-network - DNN 算法中基于树的降维
- javascript - 如何动画变化的innerHTML?
- excel - 有没有办法完全删除间接公式?
- javascript - 如何在Javascript中安装库'When'
- c++ - 在对的向量中查找元素并输出c ++
- angular - 组件逻辑中异步检索数据的问题