복붙노트

[PYTHON] 파이썬에서 외부 프로그램 (실행 파일)을 실행하고 있습니까?

PYTHON

파이썬에서 외부 프로그램 (실행 파일)을 실행하고 있습니까?

방금 파이썬으로 작업하기 시작했고 파이썬에서 외부 실행 파일을 실행하려고했습니다.

Fortran으로 작성된 프로그램에 대한 실행 파일이 있습니다. 실행 파일의 이름이 flow.exe라고 가정 해 봅시다. 그리고 내 실행 파일은 C : \ Documents and Settings \ flow_model에 있습니다. os.system과 popen 명령을 모두 시도했지만 지금까지는 제대로 작동하지 못했습니다. 다음 코드는 명령 창을 여는 것처럼 보이지만 모델을 실행하지는 않습니다.

# Import system modules
import sys, string, os, arcgisscripting
os.system("C:/Documents and Settings/flow_model/flow.exe")

이 문제를 어떻게 해결할 수 있습니까?

해결법

  1. ==============================

    1.그 공백은 정말로 귀찮은 일이 될 수 있습니다 :-( os.system, subprocess methods 등등의 상대 경로 다음에 os.chdir ( 'C : / Documents \ and \ Settings /')를 시도해보십시오.

    그 공백은 정말로 귀찮은 일이 될 수 있습니다 :-( os.system, subprocess methods 등등의 상대 경로 다음에 os.chdir ( 'C : / Documents \ and \ Settings /')를 시도해보십시오.

    최선의 노력이 공백에서 공백 장애물을 우회하려고 시도한다면, 나의 가장 좋은 제안은 중요한 경로에 공백이 생기는 것을 피하는 것입니다. 공백이없는 디렉토리를 만들 수 없으며 중요한 .exe 파일을 복사하여 시도 할 수 있습니까? 그 혼란 - 파괴 공간이 절대적으로 귀하의 복지에 필수적인 ...?

  2. ==============================

    2.Python 2.7 이상 (특히 Python 3.5 이전)을 사용하는 경우 다음을 사용할 수 있습니다.

    Python 2.7 이상 (특히 Python 3.5 이전)을 사용하는 경우 다음을 사용할 수 있습니다.

    import subprocess
    

    예 : subprocess.check_call ([r "C : \ pathToYourProgram \ yourProgram.exe", "your", "arguments", "comma", "separated"])

    다음은 문서 링크입니다. http://docs.python.org/3.2/library/subprocess.html

    파이썬 3.5 이상에서는 많은 경우 run ()을 사용할 수 있습니다 : https://docs.python.org/3.5/library/subprocess.html#subprocess.run

  3. ==============================

    3.사용법이 정확합니다. 외부 프로그램 인 flow.exe는 거기에 저장된 일부 외부 파일에 액세스하기 때문에 해당 디렉토리에서 실행해야합니다.

    사용법이 정확합니다. 외부 프로그램 인 flow.exe는 거기에 저장된 일부 외부 파일에 액세스하기 때문에 해당 디렉토리에서 실행해야합니다.

    그래서 시도해 볼 수도 있습니다.

    import sys, string, os, arcgisscripting
    os.chdir('c:\\documents and settings\\flow_model')
    os.system('"C:\\Documents and Settings\\flow_model\\flow.exe"')
    

    (작은 따옴표 안의 큰 따옴표에주의하십시오 ...)

  4. ==============================

    4.나는 당신의 길 앞에서 'r'을 삽입하여 내가 당신이라면 그것이 원시 문자열임을 나타낼 것입니다. 그리고 나서 슬래시를 사용할 필요가 없습니다. 예 :

    나는 당신의 길 앞에서 'r'을 삽입하여 내가 당신이라면 그것이 원시 문자열임을 나타낼 것입니다. 그리고 나서 슬래시를 사용할 필요가 없습니다. 예 :

    os.system(r"C:\Documents and Settings\flow_model\flow.exe")
    
  5. ==============================

    5.가장 간단한 방법은 다음과 같습니다.

    가장 간단한 방법은 다음과 같습니다.

    import os
    os.startfile("C:\Documents and Settings\flow_model\flow.exe")
    

    그것은 작동합니다. 나는 그것을 시도했다.

  6. ==============================

    6.하위 프로세스를 사용하면 더 작은 모듈이므로 .exe가 더 빨리 실행됩니다.

    하위 프로세스를 사용하면 더 작은 모듈이므로 .exe가 더 빨리 실행됩니다.

    import subprocess
    subprocess.Popen([r"U:\Year 8\kerbal space program\KSP.exe"])
    
  7. ==============================

    7.os.system을 사용하여 :

    os.system을 사용하여 :

    import os
    os.system(r'"C:/Documents and Settings/flow_model/flow.exe"')
    
  8. ==============================

    8.시험

    시험

    import subprocess
    subprocess.call(["C:/Documents and Settings/flow_model/flow.exe"])
    
  9. ==============================

    9.그것은 "및", "Settings / flow_model / flow.exe"의 인수로 C : \ Documents를 실행하려고합니까?

    그것은 "및", "Settings / flow_model / flow.exe"의 인수로 C : \ Documents를 실행하려고합니까?

    또한 subprocess.call ()을 고려할 수도 있습니다.

  10. ==============================

    10.그것이 나 였다면 EXE 파일을 루트 디렉토리 (C :)에두고 그 파일이 어떻게 작동하는지 봅니다. 그렇다면 디렉토리 이름에 (이미 언급 한) 공백이있을 것입니다. 그렇지 않은 경우에는 환경 변수가 될 수 있습니다.

    그것이 나 였다면 EXE 파일을 루트 디렉토리 (C :)에두고 그 파일이 어떻게 작동하는지 봅니다. 그렇다면 디렉토리 이름에 (이미 언급 한) 공백이있을 것입니다. 그렇지 않은 경우에는 환경 변수가 될 수 있습니다.

    또한 stderr를 확인해보십시오 (이전 답변을 int3로 사용).

    import subprocess
    process = subprocess.Popen(["C:/Documents and Settings/flow_model/flow.exe"], \
                               stderr = subprocess.PIPE)
    if process.stderr:
        print process.stderr.readlines()
    

    코드는 일반적으로 Popen 또는 Windows를 사용하지 않기 때문에 완전히 올바르지 않을 수 있지만 아이디어를 제공해야합니다. 오류 메시지가 오류 스트림에있는 것일 수도 있습니다.

  11. ==============================

    11.이것이 올바른 사용법이지만, 경로 이름의 공백은 어떤 이유로 인해 엉망입니다.

    이것이 올바른 사용법이지만, 경로 이름의 공백은 어떤 이유로 인해 엉망입니다.

    cmd.exe에서 프로그램을 실행하여 오류를 나타내는 flow.exe의 결과를 볼 수도 있습니다.

  12. ==============================

    12.위의 질문에 대해이 솔루션이 작동합니다.

    위의 질문에 대해이 솔루션이 작동합니다.

    실행 파일이있는 경로로 변경하십시오.

    import sys, string, os
    
    os.chdir('C:\\Downloads\\xpdf-tools-win-4.00\\xpdf-tools-win-4.00\\bin64')
    
    os.system(r"C:\\Downloads\\xpdf-tools-win-4.00\\xpdf-tools-win-4.00\bin64\\flowwork.exe)
    
    
    '''import sys, string, os
    
    os.chdir('C:\\Downloads\\xpdf-tools-win-4.00\\xpdf-tools-win-4.00\\bin64')
    
    os.system(r"C:\\Downloads\\xpdf-tools-win-4.00\\xpdf-tools-win-4.00\bin64\\pdftopng.exe test1.pdf rootimage")'''
    

    여기 test1.pdf rootimage는 내 코드를위한 것입니다.

  13. from https://stackoverflow.com/questions/1811691/running-an-outside-program-executable-in-python by cc-by-sa and MIT license