gpt4 book ai didi

python - 如何为多个文件运行Python脚本?

转载 作者:行者123 更新时间:2023-11-30 22:32:22 24 4
gpt4 key购买 nike

我有一个脚本,可以根据 > 之后的字符串按字母顺序对 FASTA 序列进行排序。以下是使用单个输入文件 35.fas 的代码示例。

import os, sys
import argparse
from Bio import SeqIO

records = list(SeqIO.parse("35.fas", "fasta"))
records.sort(key=lambda x : x.id)
SeqIO.write(records, "35-sorted.fas", "fasta")

fasta 文件示例:

>BAR
ATCG
>ABC
TCGA

正确输出:

>ABC
TCGA
>BAR
ATCG

所以,我想对数百个文件尝试这个,并尝试了“sys.argv”,但无法做到这一点。我不想为每个文件使用不同的输出名称作为 * 排序。只是想运行脚本并对扩展名为 .fas 的文件夹中的所有文件进行排序。这是无效的代码:

records = list(SeqIO.parse("sys.argv[0]", "fasta"))
records.sort(key=lambda x : x.id)
SeqIO.write(records, "sys.arg[0]-sorted.fas", "fasta")

最佳答案

您可能错误地使用了sys.argv,它是所有命令行参数的数组,第一个是正在运行的文件本身,例如,请看以下内容:

import sys
for f in sys.argv:
print(f)

当您将文件 a.txt、b.txt 和 c.txt 拖到脚本上时,它将打印以下内容(其中 ... 省略了完整路径):

.../a.txt

.../b.txt

.../c.txt

您可以将其实现到您的脚本中:

import os, sys
import argparse
from Bio import SeqIO

for f in sys.argv[1:]:
records = list(SeqIO.parse(f, "fasta"))
records.sort(key=lambda x : x.id)
SeqIO.write(records, f[:-4] + "-sorted.fas", "fasta")

关于python - 如何为多个文件运行Python脚本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45510493/

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