이 curl 명령어를 유닉스 쉘에서 실행하면 작동합니다 (아래 참조). 반환 된 데이터를 파일로 리디렉션 할 수 있었지만 이제 파일에 많은 공간을 낭비하는 대신 코드에서 데이터를 처리하려고합니다.Popen에서 Python의 컬 사용하기
curl -k -o outputfile.txt 'obfuscatedandVeryLongAddress'
#curl command above, python representation below
addr = "obfuscatedandVeryLongAddress"
theFile = subprocess.Popen(["curl", "-k", addr], stdout = subprocess.PIPE, stderr = subprocess.PIPE, shell = True)
이후에는 파일 .stdout이 비어 있습니다. curl 명령에서 리턴 된 데이터는 4,000 행과 같아야합니다 (쉘에서 명령을 실행할 때 검증 됨). 크기가 theFile.stdout을 깨는가? 내가 뭔가 잘못하고 있는거야?
out, err = theFile.communicate()
을 다음
편집 아웃 변수하지만 여전히 아무것도 인쇄 : 서식 및 설명 당신은 shell=True
를 제거해야
왜'requests' 라이브러리를 사용하지 않습니까? 또는 시스템 기본 'urllib'? – SuperSaiyan
related : [왜 shell = True로 내 서브 프로세스를 먹을 수 있습니까?] (http://stackoverflow.com/q/10661457/4279) – jfs