스택큐힙리스트

파이썬 subprocess/Popen 변경된 환경과 함께 사용하기 본문

카테고리 없음

파이썬 subprocess/Popen 변경된 환경과 함께 사용하기

스택큐힙리스트 2023. 4. 13. 17:24
반응형

외부 명령어를 약간 수정된 환경으로 실행하는 것이 매우 일반적인 경우라고 믿습니다. 이렇게 하는 경향이 있습니다.

import subprocess, os

my_env = os.environ

my_env[PATH] = /usr/sbin:/sbin: + my_env[PATH]

subprocess.Popen(my_command, env=my_env)

내 본능이 더 나은 방법이 있다고 느껴져. 괜찮아 보여?

답변 1

나는 현재 프로세스의 os.environ을 수정하려는 것이 아니라면 os.environ.copy()이(가) 더 좋다고 생각합니다.

import subprocess, os

my_env = os.environ.copy()

my_env[PATH] = /usr/sbin:/sbin: + my_env[PATH]

subprocess.Popen(my_command, env=my_env)

답변 2

파이썬 subprocess/Popen을 사용하여 수정된 환경에서 실행시키기

파이썬에서 subprocess/Popen은 외부 명령어를 실행시키는 강력한 기능을 제공합니다. subprocess.Popen 클래스를 사용하면 Python 코드 내에서 다른 프로그램이나 명령어를 실행시킬 수 있습니다. 이 기능은 자동화나 서버 계산, 시스템 관리 등에 매우 유용합니다.

하지만 때로는 외부 명령어를 실행시키는 환경을 조정하거나, 시스템 변수를 추가하거나, 다른 변수를 수정해야하는 경우가 있습니다. 그러한 경우에는 subprocess.Popen 인스턴스를 생성할 때 env 매개변수를 지정해야합니다.

이 env 매개변수는 환경 변수에 대한 사전 형식의 값을 가지고 있습니다. 이 변수를 설정하면 새로운 환경 변수를 추가하거나 기존 환경 변수를 수정할 수 있습니다. 이를 통해 새로운 응용 프로그램을 실행시키는 데 필요한 환경을 조정할 수 있습니다.

예를들어, 파이썬 스크립트에서 외부 프로그램을 실행하고 결과를 가져와야하는 경우가 있다면, subprocess.Popen 클래스를 사용하여 이를 수행 할 수 있습니다. 이때, 실행 시킬 외부 프로그램의 path(경로)를 정의해주고, 필요한 입력 인자를 지정할 수 있습니다.

또한 파이썬 스크립트를 실행하는 환경에서 다른 시스템 변수가 필요한 경우에도 subprocess.Popen 클래스를 사용하여 이를 설정해줄 수 있습니다. env 매개변수에 새로운 값을 전달하여 기존 환경 변수를 수정하거나, 환경 변수를 새로 추가하여 원하는 작업을 수행할 수 있습니다. 보안을 강화하는 경우, env 매개변수를 사용해서 PATH를 수정하거나 LD_LIBRARY_PATH 변수를 설정할 수 있습니다.

따라서, subprocess/Popen 클래스와 함께 env 매개변수를 사용하는 것은 파이썬에서 외부 명령어를 실행시키는 것에 있어서 매우 가치있는 기능입니다. 이를 이용해 자동화나 대규모 작업, 보안 강화 등 다양한 작업을 수행할 수 있습니다.

반응형
Comments