我有以下一段代码:

#!/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的错误: "TypeError:在字符串格式化过程中未转换所有参数"

我对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, delimiter='|')
        for row in incsv:
            if len(row) >= 4 and 'R1' in row[2]:
                outfile.write(f'{yy}{row[3]}XA\n')

Python相关问答推荐

LAB中的增强数组

运行回文查找器代码时发生错误:[类型错误:builtin_index_or_system对象不可订阅]

当使用keras.utils.Image_dataset_from_directory仅加载测试数据集时,结果不同

Python中的嵌套Ruby哈希

按列分区,按另一列排序

如何在Python数据框架中加速序列的符号化

ODE集成中如何终止solve_ivp的无限运行

如何在给定的条件下使numpy数组的计算速度最快?

如何保持服务器发送的事件连接活动?

Django—cte给出:QuerySet对象没有属性with_cte''''

为什么np. exp(1000)给出溢出警告,而np. exp(—100000)没有给出下溢警告?

在Python中使用yaml渲染(多行字符串)

使用字典或列表的值组合

在Python中控制列表中的数据步长

如何在PythonPandas 中对同一个浮动列进行逐行划分?

为什么后跟inplace方法的`.rename(Columns={';b';:';b';},Copy=False)`没有更新原始数据帧?

比较两个有条件的数据帧并删除所有不合格的数据帧

设置索引值每隔17行左右更改的索引

为什么我只用exec()函数运行了一次文件,而Python却运行了两次?

函数()参数';代码';必须是代码而不是字符串