2014-07-21 2 views
0

디렉토리를 열어주는 python 스크립트를 만들려고합니다. 해당 디렉토리의 모든 파일에 perl 스크립트를 적용하고 그 중 하나 텍스트 파일 또는 단지 하나.디렉토리의 모든 파일에 perl 스크립트를 적용하고 Python을 사용하여 출력을 얻습니다.

내가 현재 가지고 :

import shlex, subprocess 
arg_str = "perl tilt.pl *.pdb > final.txt" 
arg = shlex.split(arg_str) 

import os 
framespdb = os.listdir("prac_frames") 

for frames in framespdb: 
     subprocess.Popen(arg, stdout=True) 

나는 .PDB가 발견되지 * 점점 계속. 나는이 모든 것에 매우 익숙하므로이 스크립트를 완성하려고하는 도움이 도움이 될 것입니다.

답변

0

* .pdb를 찾을 수 없다는 것을 의미합니다. 스크립트를 실행하는 디렉토리에 * .pdb가 없을 것입니다 ... 코드를 읽을 때 나는 아무것도 보이지 않습니다. perl 스크립트가 실행될 때 'frames'내에 있습니다.

Popen 앞에 os.chdir (경로)가 필요할 수 있습니다.

항상는 (전체 경로를 지정 : 어떤 사람의 기분을 상하게 할 수있다 펄 다소 모호한 콜을 실행하지만, 모두가 내가 지적 거라고 제외하고 .. 그것을 끝낼 파이썬 스크립트를 사용하여 How do I "cd" in Python?

... 나중에 문제가되는 경우 cron이나 PATH가없는 환경에서 작업을 자동으로 실행하려고합니다. 즉 '펄 이는'-.에 그 전체 경로를 넣어

./ 의 .pdb 더 있지만 (당신이 os.chdir 옵션 대신 사용할 수있는)를 fullpath에/ .pdb 인만큼 잘되지 것입니다.

+0

os.listdir을 '* .pdb'파일을 찾기위한 디렉토리로 사용하려고하는데 "Stop! File * .pdb not found!"라는 5 개의 파일이 있습니다. 거기에 5 개의 파일이 있는데이 파일을 실행하려고합니다. 나는 이것을 위해 os.chdir (경로)를 사용하는 방법에 약간 혼란 스럽다. 나는 이것에 아주 새롭다 다만 너는 있있다. –

+0

나는 뭔가를 알아 냈다고 생각하지만, os.chdir (경로)를 사용하여 예제를 보내 주시면 매우 도움이 될 것입니다! –

0
 subprocess.Popen(arg, stdout=True) 

은 파일 이름 와일드 카드를 확장하지 않습니다. *.pdb을 처리하려면 shell=True을 사용하십시오.

관련 문제