尝试使用子进程将 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'))
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 和基于行的数据。