我有以下代码:
#!/usr/bin/python
import os, sys, subprocess
yy = 22
filename = "master%d.txt" %yy
print(filename)
outlistx = "listx"
def awkfst(inname, yy, outname):
cmd = '''awk -F "|" "$2 ~ /R1/ {print '${%d}'$4"XA"} "''' + inname + " >> " + outname %yy
os.system(cmd)
return
awkfst(filename, 22, outlistx)
输入文件具有以下方面:
|IVS-R11032|R11032|JAN03| 3|17:00|24|HtIsKvMaNsNtNyOnSaWzYg -Ag |NASA|BONN|22JAN18|1.0 | XA |NASA| 14 |5257|
我想要一个名为 listx 的文件,其中包含以下行:
22JAN03XA
原来的awk命令行:
awk -F "|" '$2 ~ /R1/ { print '${y2d}'$4"XA" }' master$y2d >> listx
工作正常。
但是当运行 python 脚本时,我收到链接到我的函数 awkfst 的以下错误: “类型错误:在字符串格式化过程中并非所有参数都被转换”
我对 python 很陌生,想将我的 bash 脚本移到 python 中,但不知道如何解析它们之间的一些信息。
以下是如何在 Python 中完成这一切,而不是使用 shell 来运行
awk
。
import csv
def awkfst(inname, yy, outname):
with open(innane) as infile, open(outname, 'w') as outfile:
incsv = csv.reader(infile, sep='|'):
for row in incsv:
if 'R1' in row[2]:
outfile.write(f'{yy}{row[3]}XA\n')