programing

Python 하위 프로세스 popen 사용 방법

linuxpc 2023. 7. 20. 21:45
반응형

Python 하위 프로세스 popen 사용 방법

부터os.popen다음으로 대체 중입니다.subprocess.popen어떻게 변환해야 하는지 궁금합니다.

os.popen('swfdump /tmp/filename.swf/ -d')

로.subprocess.popen()

노력했습니다.

subprocess.Popen("swfdump /tmp/filename.swf -d")
subprocess.Popen("swfdump %s -d" % (filename))  # NOTE: filename is a variable
                                                # containing /tmp/filename.swf

하지만 제가 이걸 제대로 작성하지 못하고 있는 것 같습니다.어떤 도움이라도 주시면 감사하겠습니다.감사해요.

subprocess.Popen인수 목록을 사용합니다.

from subprocess import Popen, PIPE

process = Popen(['swfdump', '/tmp/filename.swf', '-d'], stdout=PIPE, stderr=PIPE)
stdout, stderr = process.communicate()

사용자의 마이그레이션을 지원하는 문서 섹션도 있습니다.os.popen로.subprocess.

최근 Python 버전에서는subprocess큰 변화가 있습니다.완전히 새로운 클래스를 제공합니다.Popen처리할os.popen1|2|3|4.

더 뉴subprocess.Popen()

import subprocess
subprocess.Popen('ls -la', shell=True)

그 주장은 다음과 같습니다.

subprocess.Popen(args, 
                bufsize=0, 
                executable=None, 
                stdin=None, stdout=None, stderr=None, 
                preexec_fn=None, close_fds=False, 
                shell=False, 
                cwd=None, env=None, 
                universal_newlines=False, 
                startupinfo=None, 
                creationflags=0)

간단히 말해서, 새로운Popen4개의 기존 기능으로 분할된 모든 기능 포함popen.

더 올드popen:

Method  Arguments
popen   stdout
popen2  stdin, stdout
popen3  stdin, stdout, stderr
popen4  stdin, stdout and stderr

당신은 스택 오용에서 더 많은 정보를 얻을 수 있습니다 - 로버트 로빈슨.그의 헌신에 감사드립니다.

sh를 사용하면 훨씬 쉬워집니다.

import sh
print sh.swfdump("/tmp/filename.swf", "-d")

특히 복잡한 경우 셸 명령을 일련의 인수로 나누는 방법이 명확하지 않을 수 있습니다.shlex.split()인수에 대해 올바른 토큰화를 수행할 수 있습니다(Blender의 통화 예를 사용합니다).

import shlex
from subprocess import Popen, PIPE
command = shlex.split('swfdump /tmp/filename.swf/ -d')
process = Popen(command, stdout=PIPE, stderr=PIPE)
stdout, stderr = process.communicate()

https://docs.python.org/3/library/subprocess.html

언급URL : https://stackoverflow.com/questions/12605498/how-to-use-subprocess-popen-python

반응형