複数のディレクトリと複数のファイルでPythonスクリプトを実行する

複数のディレクトリと複数のファイルでPythonスクリプトを実行する

これは私のコマンドラインですpython

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

複数のディレクトリを持つディレクトリがあります。これらの複数のディレクトリ内に1つ以上のフォルダがある可能性があります。

この1つ以上のフォルダでPythonスクリプト.faaとファイルを実行する必要があります。.fna

どうすればいいですか?

サンプルツリー:

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

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

.fna私のPythonスクリプトはフォルダ内の入力と出力を使用します。.faaフォルダとディレクトリも同義です。

ベストアンサー1

私はこれが役に立つと思います:

@1_CRが提案したようにスクリプトが使用され、os.walkファイルが同時に存在する場合(つまり、同じディレクトリに)hello_world.py2つのファイルのパスを使用してスクリプトが呼び出されます。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()

2番目のスクリプト:

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

おすすめ記事