2011-08-08 5 views
0

커맨드 라인 프로그램을위한 파이썬 래퍼를 만들고 있습니다. 래퍼는 일련의 파일을 인수로 인수로 명령 줄 프로그램에 하나씩 보냅니다. 내 래퍼는 다음과 같습니다.파이썬에서 다른 경로에서 파일을 가져 오는 중?

for file_name in glob.iglob('A0*'): 
    output_dir = ''.join(('my_output_',file_name)) 
    cmd = ['/Users/bunsen/src/my_program', file_name] 
    process = subprocess.Popen(cmd, stdout=subprocess.PIPE) 
    process.wait() 

파일 경로를 제어하는 ​​방법을 이해하는 데 어려움이 있습니다. 커맨드 라인 프로그램이 반복해야하는 파일 이름 목록이 매우 있습니다. 현재 파이썬 스크립트와 동일한 디렉토리에 파일이있는 경우 랩퍼가 완벽하게 작동합니다.

커맨드 라인 인수 파일을 별도의 하위 디렉토리에 저장하고이 하위 디렉토리에 Python과의 상대 경로로 액세스하고자합니다. 파이썬이 이것을 할 수있게 해주는 코드를 어떻게 프로그램에 추가 할 수 있습니까? 감사.

답변

0

당신이 원하는 것은 다음 인 것 같다 : glob.iglob(os.getcwd()+'/A0*')

0

당신은 몇 가지 유용한 (플랫폼 독립적 인) 패스 기능에서 얻을 수있는 os 모듈을 사용할 수 있습니다. 다음과 같이 시도해보십시오.

import os 
COMMAND_LINE_FILES_HOME = "cmd_files" # Set the name of the directory where the command line files live 
BASE_PATH = os.path.abspath(os.path.dirname(__file__)) # gets the path to the directory where this file lives 

COMMAND_LINE_FILES_DIRECTORY = os.path.join(BASE_PATH, COMMAND_LINE_FILES_HOME) # Join these paths in a system-neutral way 

이제 파일을 열 때 COMMAND_LINE_FILES_DIRECTORY를 사용할 수 있습니다. 해당 디렉토리에있는 파일 목록을 가져 와서 반복 할 수 있습니다 (위에서 Carlos가 제안한 glob.iglob (경로 이름)) 또는 원하는대로 사용하십시오.

관련 문제