파이썬 스크립트에서 몇 가지 쉘 스크립트를 실행하고 있습니다. 특정 셸 스크립트 (코드의 마지막 줄) 호출은 Hive 쿼리를 실행하여 일부 테이블 정보를 가져 오는 데 사용되며이 출력을 파일로 리디렉션하고 싶습니다. 내 파이썬 스크립트는 다음과 같습니다.
$ cat test.py
import argparse
from subprocess import call
parser = argparse.ArgumentParser()
parser.add_argument('-c','--cutoff',required=True)
args = parser.parse_args()
Table="elements_status_values_"+ args.cutoff
call(["clear"])
print ">> Running the hive query"
call(["hive", "-S", "-e" "select * from %s order by rand() limit 2;" % cutoffTable])
이것을 실행하면 터미널에서 결과를 얻지 만 출력을 사용하여 몇 가지 작업을 더 수행하려면 출력을 파이썬 스크립트의 파일로 리디렉션해야합니다. 따라서 기본적으로 동일한 스크립트 내에서 다른 작업에 파일을 사용할 수 있도록 Hive 쿼리 출력이 파일로 리디렉션되기를 원합니다. 쉘 스크립트에서 '>'를 사용하여 출력을 파일로 리디렉션 할 수 있지만 파이썬을 사용하여이 작업을 수행 할 수있는 방법이 있습니까? 나는 이것과 관련된 게시물을 검색했지만 모두 파이썬 스크립트 출력을 내가 원하지 않는 파일로 리디렉션하고 있습니다.
확인 문서를 위해 subprocess.call
: 당신은 같은 PARAMS를 제공 할 수 있습니다 stdout
와 stdin
.
with open('output.txt', 'w') as output_file:
call([your_stuff], stdout=output_file)
이것은 일반적인 방법입니다. 유사한 접근 방식은 C 및 다른 많은 언어에서도 작동합니다.
올드 파이썬 별 방법은 사용하는 것 subprocess.check_output
대신에 subprocess.call
.
현재 파이썬 특정 방법은 subprocess.run
표준 출력 을 사용 하고 문자 그대로 확인하는 것입니다.output = run(..., check=True, stdout=PIPE).stdout
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다