【问题标题】:Add formatted output from subprocess.check_output to list将来自 subprocess.check_output 的格式化输出添加到列表
【发布时间】: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


猜你喜欢
  • 2016-12-26
  • 1970-01-01
  • 2019-10-02
  • 1970-01-01
  • 2022-01-22
  • 1970-01-01
  • 2014-01-12
  • 2014-01-02
  • 1970-01-01
相关资源
最近更新 更多