【发布时间】:2022-06-15 15:07:10
【问题描述】:
我正在运行subprocess.check_output(),我正在尝试将输出添加到列表中。子流程按预期返回,但是,它以某种不希望的格式返回。
输出在括号中给出,我正在尝试删除。
data = subprocess.check_output(path, args)
datastring = str(data)
print(datastring) #1
datastring = datastring.replace("[", "").replace("]", "")
print(datastring) #2
第一次在#1 以格式打印预期的输出
[[Val1],[Val2],[Val3]]
调用replace之后,它根本不打印任何东西。
我还想将这些值附加到预先存在的列表中。 这是我目前的尝试:
data = subprocess.check_output(path, args)
datastring = str(data)
print(datastring) #1
datastring = datastring.replace("[", "").replace("]", "")
print(datastring) #2
list = [Name, ID]
string_list = datastring.split(",")
for i in string_list:
list.append(i)
任何有关字符串格式的帮助将不胜感激!另外,请建议如何将值附加到列表中更有效!
【问题讨论】:
-
我根本无法重现您的结果。如所写,您的代码不可能在第一个
print中产生带有非方括号字符的输出,而在第二个中产生空输出。就此而言,在 Python 3(当前唯一受支持的 Python 版本)上,您最终会在两种情况下都使用b''包装输出(因为默认情况下check_output会生成bytes)。您需要更具体地了解您使用的是哪个版本的 Python,exact 输出是什么,并确保您的 minimal reproducible example 确实重现了您的问题(它绝对不能,如发布)。 -
旁注:您正在运行的程序是否是另一个 Python 进程,它正在输出某些
list的字符串化形式?知道这种情况是否有用,因为手动解析这样的输出是丑陋且容易出错的;您通常希望改用ast.literal_eval(或者让其他进程使用json模块转储数据,以便您可以使用json模块解析它)。
标签: python subprocess string-formatting