在多个目录和多个文件上运行 Python 脚本

在多个目录和多个文件上运行 Python 脚本

这是我的命令行python

python script.py -a .faa -n .fna

我有一个包含多个目录的目录。在这多个目录中,可能有 1 个或多个文件夹。

在这 1 个或多个文件夹中,我需要在.faa.fna文件上运行我的 python 脚本。

我该怎么做呢?

示例树:

Staph1 ----> [CO1, CO2] ----> [.fna, .faa] from CO1, [.fna, .faa] from CO2

Staph2 ----> [CO6] ----> [.fna, .faa] from CO6

我的 Python 脚本将使用文件夹内的输入.fna和输出。.faa文件夹和目录也是同义词。

答案1

我认为这应该有帮助:

该脚本将使用os.walk,如 @1_CR 建议,并且当和文件同时存在时(即在同一目录中),将使用hello_world.py两个文件的路径调用脚本。fnafaa

import glob, os

def scanfolder():
    for path, dirs, files in os.walk('/home/shadowe/test1/test1/'):
        flag_faa = 0
        flag_fna = 0
        for f in files:
            if f.endswith('.faa'):
                flag_faa  = 1
                faa_file_path = os.path.join(path,f)
            if f.endswith('.fna'):
                flag_fna = 1
                fna_file_path = os.path.join(path,f)
            if flag_faa == 1 and flag_fna == 1:
                print "Calling script"
                os.system("python hello_world.py" + " -a "+ faa_file_path + " -b " + fna_file_path)
                flag_faa  = 0
                flag_fna  = 0


scanfolder()

第二个脚本:

import sys

print "Hello World"
print "This argument passing qualifies " + sys.argv[1] + " "  + sys.argv[2] + " " + sys.argv[3] + " " + sys.argv[4]

输出:

$ python test.py 
Calling script
Hello World
This argument passing qualifies -a /home/shadowe/test1/test1/test2/test3/two.faa -b     /home/shadowe/test1/test1/test2/test3/two.fna
Calling script
Hello World
This argument passing qualifies -a /home/shadowe/test1/test1/test6/test7/four.faa -b /home/shadowe/test1/test1/test6/test7/five.fna

相关内容