안녕하세요. 파이썬 질문을 자꾸 드리게 되네요ㅠ
폴더 만들고 파일복사 및 수정들에 대해서도 질문을 올렸었는데, 이제는 좀 공부가 된거같습니다.
질문드릴 내용은
subprocess 모듈을 써서, 어떤 프로그램을 자동으로 실행시키려고 하는데 어려워서 도움을 구해봅니다.
일단 프로그램 실행 커맨드는 아래와 같습니다.
]$ gmx pdb2gmx -f protein.pdb(input 파일 입니다.) -ignh -ter
나름 찾아보니 os.system을 사용해도 된다는데 subprocess를 사용하는 걸 권하던데... 해보니 잘 안되네요.
os.system("gmx pdb2gmx") 으로는 프로그램이 일단 실행되는걸 확인 했는데,
subprocess.call("gmx pdb2gmx") 으로는
Traceback (most recent call last):
File "./test.py", line 11, in <module>
subprocess.call("gmx pdb2gmx")
File "/usr/local/python_3.6.0/lib/python3.6/subprocess.py", line 267, in call
with Popen(*popenargs, **kwargs) as p:
File "/usr/local/python_3.6.0/lib/python3.6/subprocess.py", line 707, in __init__
restore_signals, start_new_session)
File "/usr/local/python_3.6.0/lib/python3.6/subprocess.py", line 1326, in _execute_child
raise child_exception_type(errno_num, err_msg)
FileNotFoundError: [Errno 2] No such file or directory: 'gmx pdb2gmx'
이런 메시지를 받았습니다.
도움 부탁드려 봅니다.
python 실행 경로 또는 export된 path 내에 gmx가 없는 것으로 보입니다
gmx를 / 경로부터 적어주시면 될 것 같습니다.
subprocess.call(["gmx", "pdb2gmx"]) 이렇게 따로 적으니 됩니다~ ㅎㅎ
답변 감사합니다.
실행 후 번호로 선택하는게 나오는데, 그걸 선택하게 하는게 어떤 것인지 모르겠네요 ㅠ
커맨트 라인 인터페이스로 돌리는 프로그램의 경우는 보통 동작과정을 담은 스크립트를 받는 경우가 많고요 그렇지 않으면 stdin을 파일로부터 읽어서 쏴주는 방법이 있습니다.
http://stackoverflow.com/questions/163542/python-how-do-i-pass-a-string-into-subprocess-popen-using-the-stdin-argument
참고하세요~