Python 中的 awk 命令不断出现类型错误

问题描述 投票:0回答:1

尝试使用子进程将 bash 脚本转换为 python,但它不起作用。 jq 命令不断出现类型错误

filename = temp.csv
with open (filename, 'a') as file_name: 
  ndfile="account.csv" 
  with open(ndfile, 'a')
    for line in ndfile: 
      line = line.strip()
      result = subprocess.run(["jq -r '.accountdata[] | [id, name, number, date] | @csv'"], stdout=open(file_name, 'a'))
      result.write(line)
   subprocess.run(['awk', '-F', ',', '!seen[$1]++', file_name], stdout=open(ndfile, 'w'))
python bash csv awk jq
1个回答
0
投票
subprocess.run(["jq -r '.accountdata[] | [id, name, number, date] | @csv'"])

运行名为

jq -r '.accountdata[] | [id, name, number, date] | @csv'
且不带任何参数的单个二进制文件 – 但您的二进制文件的名称是
jq
并且您想使用 2 个参数运行它!

subprocess.run(["jq", "-r", "'.accountdata[] | [id, name, number, date] | @csv'"])

将运行带有 2 个参数的二进制文件。或者,传递单个字符串而不是数组并指定

shell=True
:

subprocess.run("jq -r '.accountdata[] | [id, name, number, date] | @csv'", shell=True)

您的

awk
电话也是如此。但更好的是:直接使用 python,它已经可以很好地操作 JSON 和基于行的数据。

© www.soinside.com 2019 - 2024. All rights reserved.