在python脚本内循环执行awk
我有一个15列的表格文件,我想在循环中为该文件的每一行执行2个awk命令(我正在python脚本中生成许多其他函数,因此这些awk命令应该在我的脚本中) 简而言之:我要执行的每个命令都存储在两个变量中:strand_signature和strand_correction。所以我逐行读取我的csv文件并调用这两个脚本,但是在我的打印测试中,修改没有发生在python脚本内循环执行awk,python,linux,csv,awk,Python,Linux,Csv,Awk,我有一个15列的表格文件,我想在循环中为该文件的每一行执行2个awk命令(我正在python脚本中生成许多其他函数,因此这些awk命令应该在我的脚本中) 简而言之:我要执行的每个命令都存储在两个变量中:strand_signature和strand_correction。所以我逐行读取我的csv文件并调用这两个脚本,但是在我的打印测试中,修改没有发生 有人能解释一下我在哪一点上犯了错误吗?编写脚本最简单的方法是编写单独的行,甚至只是行的一部分,运行、测试,确保它工作正常,然后继续下一部分。这样,
有人能解释一下我在哪一点上犯了错误吗?编写脚本最简单的方法是编写单独的行,甚至只是行的一部分,运行、测试,确保它工作正常,然后继续下一部分。这样,您一次只能解决几个问题 相反,您选择了最困难的方法:编写整个脚本,然后尝试在之后修复所有问题。这意味着您必须同时考虑以下所有问题,因为每个问题都是一个完整的问题:
}
row
作为awk
的文件名,即使这是Python列表而不是文件awk
awk
是基于行的,而不是基于Python列表的,因此您必须相应地加入和拆分awk
,改用Python。这样写和运行起来更容易、更健壮、更快:
with open('my_file.csv') as csv_file:
csv_reader = csv.reader(csv_file, delimiter='\t')
for row in csv_reader:
if float(row[9]) > float(row[10]):
row[15] = "-"
else:
row[15] = "+"
# ...
print(row)
编写脚本最简单的方法是编写单独的行,甚至只是行的一部分,运行、测试、确保它工作,然后继续下一部分。这样,您一次只能解决几个问题 相反,您选择了最困难的方法:编写整个脚本,然后尝试在之后修复所有问题。这意味着您必须同时考虑以下所有问题,因为每个问题都是一个完整的问题:
}
row
作为awk
的文件名,即使这是Python列表而不是文件awk
awk
是基于行的,而不是基于Python列表的,因此您必须相应地加入和拆分awk
,改用Python。这样写和运行起来更容易、更健壮、更快:
with open('my_file.csv') as csv_file:
csv_reader = csv.reader(csv_file, delimiter='\t')
for row in csv_reader:
if float(row[9]) > float(row[10]):
row[15] = "-"
else:
row[15] = "+"
# ...
print(row)
这种方法效率不高:要么用python进行所有处理,要么用awk脚本进行所有处理。这种方法效率不高:要么用python进行所有处理,要么用awk脚本进行所有处理