我有一个脚本,可以接收两个文件作为输入并根据行创建一个字典。最后,它将覆盖第一个文件。
我正在寻找一种在文件夹的所有文件对上运行此脚本的方法,根据名称中的模式选择sys.argv [1]和sys.argv [2]。
import re
import sys
datafile = sys.argv[1]
schemaseqs = sys.argv[2]
datafile_lines = []
d = {}
prev = None
with open(datafile, 'r') as f:
i = 0
for line in f:
if i % 2 == 0:
d[line.strip()]=0
prev = line.strip()
else:
d[prev] = line.strip()
i+=1
new_d = {}
with open(schemaseqs, 'r') as f:
i=0
prev = None
for line in f:
if i % 2 == 0:
new_d[line.strip()]=0
prev = line.strip()
else:
new_d[prev] = line.strip()
i+=1
for key, value in d.items():
if value in new_d:
d[key] = new_d[value]
print(d)
with open(datafile,'w') as filee:
for k,v in d.items():
filee.writelines(k)
filee.writelines('\n')
filee.writelines(v)
filee.writelines('\n')
我有数百个文件对,每个文件对都共享相同的模式蛋白质XXXX(其中XXXX是数字),该数字最多可以包含四个数字(例如9,99,999或9999)。所以我有蛋白质555.txt和蛋白质555.fasta
我已经看到我可以使用glob或os.listdir从目录中读取文件。但是,我不能将它们分配给变量,也不能在目录的每对中一次提取一对线。
任何帮助表示赞赏。