>source

매개 변수가 전달되는 다른 py 파일에서 py 스크립트를 루프로 실행하려고합니다.

다음을 시도하고 있습니다.

Script1: 
lst = [12,23,45,67,89]
age_lst = []
for i in lst:
  age_i = os.system("python script_to_run {0}".format(int(i)) )
  age_lst.append(age_i)

아래는 script_to_run.py

Script2:script_to_run.py
def age(age:int):
  estimated_val = age+2
  return estimated_val
if __name__=="__main__":
  my_age = int(sys.argv[1])
  final_age = age(age=my_age)
  print(final_age)

내가 Script 2 (script_to_run.py)라고 부르는 Script 1을 실행할 때마다 잘 실행되지만 age_lst[] 2로만 채워집니다.

기대는

age_lst = [14,25,47,69,91] <---adding 2 with all elements in age_lst

내가 무엇을 놓치고 있습니까?

또한 내가 실행할 때 Script1.py cmd에서 오류가 발생합니다. python: can't open file 'script_to_run': [Errno 2] No such file or directory

Windows 10을 사용하고 있습니다.

  • 답변 # 1

    os.system 프로그램을 실행하고 종료 코드를 반환합니다. 스크립트는 완전히 다른 짐승 인 표준 출력에 기록합니다. 정확히 무엇에서 반환 os.system OS에 따라 다릅니다. 예를 들어 리눅스에서는 exit 코드, 0-255로 제한되며 신호 정보가 추가 된 상태로 왼쪽으로 이동합니다. 어질러 놓은.

    그러나 출력을 문자열로 변환하고 어쨌든 stdout으로 인쇄하기 때문에 부모 프로세스가 읽도록하십시오. 그만큼 subprocess 모듈에는 프로그램을 실행하는 여러 기능이 있습니다. run 현대적인 방법입니다.

    import subprocess as subp
    import sys
    lst = [12,23,45,67,89]
    age_lst = []
    for i in lst:
        proc = subp.run([sys.executable, "script_to_run.py", str(i)],
            stdout=subp.PIPE)
        if proc.returncode == 0:
            print("script returned error")
        else:
            age_lst.append(int(proc.stdout))
    print(age_lst)
    
    

관련 자료

  • 이전 mysql - SQL을 사용하여 이전 날짜의 열 수를 얻는 방법은 무엇입니까?
  • 다음 python - 검색 '알고리즘'에서 "변수가 하나만있는 경우"를 코딩하는 방법은 무엇입니까?