현재 열려있는 파일에 subprocess.Popen 객체의 표준 출력을 리디렉션하려고하므로 this과 같은 많은 웹 사이트에있는 지침을 따랐습니다.Python - 열린 파일을 표준 출력으로 Popen에 전달할 수 없습니다.
그러나, Popen.stdout가 제대로
내 코드가 갔다 어떤 이유로 할당되지 않은 다음과
는def foo(file):
print(file) # printA
proc = subprocess.Popen('command, stdout=file) # i've tried with both shell=True/False
print(proc) # printB
print(proc.stdout) # printC
return proc
def main():
file = open('path', 'w')
p = foo(file)
print(p.stdout) # printD
결과는 어떤에서
printA: <_io.TextIOWrapper name='path' mode='w' encoding='UTF-8'>
printB: <subprocess.Popen object at 0x161966d0>
printC: None
printD: None
을 다음입니다 I 파이썬 문서 here에서 읽으면, PIPE가 지정되지 않으면 stdout의 기본값은 None입니다. 그러나 this 여기에서 명백하게 우리가 stdout에 대한 인수로 열린 파일을 전달할 수 있음을 보여 주므로 왜 코드가 작동하지 않는지 이해할 수 없습니다.
도와주세요.
printA는 열려있는 것이 표준 파일이 아니라는 것을 명확하게 보여줍니다 (OS 프로세스 디스크립터, 서브 프로세스가 실제로 필요로하는 것). 이 작업을하려면 실제 파일을 전달해야합니다. – deets
@deets U는 .log 또는 .txt 파일과 같은 의미입니까? – user1948847
W : 1,8 : foo : 내장 '파일'다시 정의 W : 10,4 : main : 사용하지 않는 변수 'f' – jhermann