여러 디렉터리와 여러 파일에서 Python 스크립트 실행

여러 디렉터리와 여러 파일에서 Python 스크립트 실행

이것은 내 명령줄입니다 python.

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

여러 디렉터리가 있는 디렉터리가 있습니다. 이러한 여러 디렉터리 내에 하나 이상의 폴더가 있을 수 있습니다.

이 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.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

관련 정보