하위 프로세스 호출을 텍스트 파일로 전송하려면 어떻게 해야 합니까?
subprocess.call(["/home/myuser/run.sh", "/tmp/ad_xml", "/tmp/video_xml"])
지금 제가 실행하고 있는 스크립트가 있습니다.실행하면 run.sh 에 인쇄물이 있기 때문에 이 선에 도달하면 인쇄가 시작됩니다.
이 파일을 텍스트 파일로 복사하려면 어떻게 해야 합니까? (가능한 경우 인쇄도 가능)
출력을 파일에 쓰려면 다음의 stdout-argument를 사용할 수 있습니다.subprocess.call
.
둘 중 하나가 필요합니다.
None
(기본값, stdout은 상위 스크립트에서 상속됨)subprocess.PIPE
(하나의 명령/프로세스에서 다른 명령/프로세스로 파이프를 연결하도록 allows)- 파일 개체 또는 파일 설명자(파일에 출력을 기록할 것)
파일을 열어서 다음과 같은 것이 필요합니다.open
개체 또는 파일 기술자 정수를 전달합니다.call
:
f = open("blah.txt", "w")
subprocess.call(["/home/myuser/run.sh", "/tmp/ad_xml", "/tmp/video_xml"], stdout=f)
소켓과 같은 유효한 파일과 같은 객체가 작동할 것이라고 생각합니다( :). 하지만 시도해 본 적은 없습니다.
marcog에서 stderr도 재연결할 수 있다고 언급한 것처럼 stdout과 동일한 위치로 재연결할 수 있습니다.stderr=subprocess.STDOUT
. 위에 언급된 값 중 어느 것도 작동하므로 다른 위치로 리디렉션할 수 있습니다.
에 대한 옵션popen
사용할 수 있는call
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
그래서...
myoutput = open('somefile.txt', 'w')
subprocess.call(["/home/myuser/run.sh", "/tmp/ad_xml", "/tmp/video_xml"], stdout=myoutput)
그러면 당신은 당신이 원하는 것을 할 수 있습니다.myoutput
또한 이와 같이 파이프 출력에 가까운 작업을 수행할 수도 있습니다.
dmesg | grep hda
다음과 같습니다.
p1 = Popen(["dmesg"], stdout=PIPE)
p2 = Popen(["grep", "hda"], stdin=p1.stdout, stdout=PIPE)
output = p2.communicate()[0]
파이썬 매뉴얼 페이지에는 사랑스럽고 유용한 정보가 많이 있습니다.
언급URL : https://stackoverflow.com/questions/4856583/how-do-i-pipe-a-subprocess-call-to-a-text-file
'programing' 카테고리의 다른 글
서비스 방법을 만들 때 module.service와 module.factory의 차이점은 무엇입니까? (0) | 2023.10.29 |
---|---|
for 루프에서 팬더 데이터 프레임의 행을 추가하는 방법? (0) | 2023.10.29 |
nodejs의 폴더 아래에 있는 *. html 확장명으로 파일 찾기 (0) | 2023.10.29 |
"너무 많은 데이터베이스 연결"의 원인 (0) | 2023.10.29 |
사용자 지정 비교 술어가 포함된 힙큐 (0) | 2023.10.29 |