gpt4 book ai didi

python - 从 Python 调用 gawk

转载 作者:太空宇宙 更新时间:2023-11-04 09:21:06 25 4
gpt4 key购买 nike

我正在尝试调用 gawk (AWK 的 GNU 实现)以这种方式来自 Python。

import os
import string
import codecs

ligand_file=open( "2WTKA_ab.txt", "r" ) #Open the receptor.txt file
ligand_lines=ligand_file.readlines() # Read all the lines into the array
ligand_lines=map( string.strip, ligand_lines )
ligand_file.close()

for i in ligand_lines:
os.system ( " gawk %s %s"%( "'{if ($2==""i"") print $0}'", 'unique_count_a_from_ac.txt' ) )

我的问题是“i”没有被它所代表的值所取代。 “i”代表的值是一个整数而不是字符串。我该如何解决这个问题?

最佳答案

这是一种不可移植且困惑的检查文件中是否有内容的方法。假设你有 1000 行,你将对 gawk 进行 1000 次系统调用。这是 super 低效的。你用的是 Python,他们也用 Python 来做。

....
ligand_file=open( "2WTKA_ab.txt", "r" ) #Open the receptor.txt file
ligand_lines=ligand_file.readlines() # Read all the lines into the array
ligand_lines=map( str.strip, ligand_lines )
ligand_file.close()
for line in open("unique_count_a_from_ac.txt"):
sline=line.strip().split()
if sline[1] in ligand_lines:
print line.rstrip()

或者,如果 Python 不是必须的,您也可以使用这一行。

gawk 'FNR==NR{a[$0]; next}($2 in a)' 2WTKA_ab.txt  unique_count_a_from_ac.txt

关于python - 从 Python 调用 gawk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2485362/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com