파이썬에서 os.popen 함수를 가지고 하고있는데 안되네요.. ㅠㅠ 도와주세요ㅠㅠ

조회수 2335회
import os
def run(command):
    file = open("tmp.py", 'w')
    file.write(command)
    file.close()
    res = os.popen("sudo python3 tmp.py -f").read()
    return res
res = run("안녕하세요")
print("결과"+res+"")

이런식으로 코드를 짜서 실행했습니다.

Traceback (most recent call last):
  File "tmp.py", line 1, in <module>
    안녕하세요
NameError: name '안녕하세요' is not defined

터미널창에는 이렇게 뜨는데 정작 결과 라고만 뜨네요.. 도와주시면 감사드리겠습니다. 파이썬에서 파이썬코드를 실행하려고 하는데 도움을 주시면 감사드리겠습니다.

  • (•́ ✖ •̀)
    알 수 없는 사용자

1 답변

  • tmp.py 에 "안녕하세요" 를 쓰고 있는데...tmp.py가 python 문법에 맞지도 않는데 정상적으로 동작하겠어요?

    그리고 파이썬에서 파이썬 스크립트를 수행하는데 왜 외부 프로세스로 동작을 시켜야하죠?

    file = open("tmp.py", 'w')
    file.write("print('aaaaa')")
    file.close()
    
    import tmp
    

    위와 같이 해도 수행되는 겁니다. 물론 결과를 받아야 된다면 함수로 작업하고 호출해도 그만이구요.

    file = open("tmp.py", 'w')
    file.write("def show():return 'aaaaa'")
    file.close()
    
    import tmp
    s = tmp.show()
    print(s)
    

    그럼에도 질문자의 코드를 동작하게 만들고 싶다면 아래의 수정부분처럼 해주면 됩니다.

    import os
    def run(command):
        file = open("tmp.py", 'w')
        file.write(command)
        file.close()
        res = os.popen("sudo python3 tmp.py -f").read()
        return res
    res = run("print('hello')")  # 수정
    print("결과"+res+"")
    

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)