gpt4 book ai didi

python - 为批处理提供输入和输出文件?

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

我在一个目录中有 100 多个 .txt 文件,我想为每个文件运行相同的 python 脚本。现在我必须键入类似的命令超过 100 次,因为每个命令都有细微的差异,因为输入和输出文件名不同。我想知道这是否可以自动完成。

我的代码是这样的:

import pandas as pd
import numpy as np
import os
import argparse

parser = argparse.ArgumentParser(description='Excelseq ')
parser.add_argument('-i','--txt', help='Input file name',required=True)
parser.add_argument('-o','--output',help='output file name', required=True)
args = parser.parse_args()

df = pd.read_csv(args.txt, sep='\t' )
f=open('VD.fasta', "r+")
out = open(args.output, "w")

for line in f:
title = line[1:]
title = title.rstrip()

seq = f.readline()
seq = seq.rstrip()

if df['ReadID'].str.contains(title).any():
out.write('>{0}\n{1}\n'.format(title,seq))

代码接受 1 个输入文件:df-i 给出,它是一个 .txt 文件,脚本检查 ReadID 来自 .txt 文件在 .fasta 文件中。如果是,脚本将打印出 titleseq。但是对于每个输出文件,我希望名称与 .txt 文件相同,但扩展名为 .fasta。

例如:

input file1 : H100.txt
output file1: H100.fasta

input file2 : H101.txt
output file2: H101.fasta

input file3: H102.txt
output file3: H102.fasta

...

我如何为超过 100 个文件自动执行此操作?每次运行都需要很长时间,我不想坐在电脑前等待它完成然后运行下一个。

最佳答案

我无法对此进行测试,因为我没有输入文件,也没有安装您安装的所有第三方模块。然而,它应该接近你应该做的,正如我试图在评论中解释的那样。

import glob
import numpy as np
import os
import pandas as pd
import sys

def process_txt_file(txt_filename, f):
root, ext = os.path.splitext(txt_filename)
fasta_filename = root + '.fasta'

print('processing {} -> {}'.format(txt_filename, fasta_filename))

df = pd.read_csv(txt_filename, sep='\t' )
with open(fasta_filename, "w") as out:
f.seek(0) # rewind
for line in f:
title = line[1:].rstrip()
seq = f.readline().rstrip()

if df['ReadID'].str.contains(title).any():
out.write('>{0}\n{1}\n'.format(title, seq))

if __name__ == '__main__':
if len(sys.argv) != 2:
print('usage: {} <path-to-txt-files-directory>'.format(sys.argv[0]))
sys.exit(2)

with open('VD.fasta', "r+") as f:
for input_filename in glob.glob(os.path.join(sys.argv[1], 'H*.txt'):
process_txt_file(input_filename, f)

关于python - 为批处理提供输入和输出文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39628131/

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