반응형
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)
간단히 말해서, 새로운Popen
4개의 기존 기능으로 분할된 모든 기능 포함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
반응형
'programing' 카테고리의 다른 글
파이썬: 삐 소리 내기 (0) | 2023.07.20 |
---|---|
점과 일치하는 정규식 (0) | 2023.07.20 |
가장 많이 발생한 값을 포함하는 모든 행 반환 (0) | 2023.07.20 |
막대 그래프에서 사용되지 않는 수준 유지 (0) | 2023.07.20 |
파이썬: TO, CC 및 BCC로 메일을 보내는 방법은 무엇입니까? (0) | 2023.07.20 |