python 3 는 subprocess 모듈 을 통 해 스 크 립 트 를 호출 하고 스 크 립 트 와 상호작용 을 합 니 다.
3343 단어 python3subprocess각본
예비 지식
1.python 3 의 기본 문자열 형식
Python 2.x 는 ASCII 와 Unicode 문자열 을 동시에 지원 합 니 다.기본적으로 ASCII 인 코딩 입 니 다.파 이 썬 3 에 서 는 이러한 지원 이 바 뀌 었 습 니 다.유 니 코드 는 현재 기본 형식 이 되 었 고 ASCII 문자열 은 현재 bytes 라 고 부 릅 니 다.bytes 데이터 구 조 는 바이트 값 을 포함 하고 있 습 니 다.
데 이 터 를 포함 하 는 가 변 바이트 배열 이기 때문에 문자열 로 간주 해 서 는 안 됩 니 다.
위의 이 말 은(제3 판)에서 나 온 것 이다.이것 은 python 2 와 python 3 의 매우 큰 불 호환성 을 야기 시 켰 다.python 2 에 서 는 많은 방법 이 사용 되 지만 python 3 에 서 는 사용 할 수 없습니다.다행히도 python 은 이런 문 제 를 해결 하 는 방법 을 제공 했다.
기본 문자열 을 bytes 형식 으로 변환 하려 면 유 니 코드 를 ASCII 로 변환 하 십시오.
#
bytes("str",encoding="utf8") # encoding="utf8"
egg:
bytes(" ",encoding="gbk")
b'\xd6\xd0\xb9\xfa'
bytes(" ",encoding="utf-8")
b'\xe4\xb8\xad\xe5\x9b\xbd'
#
"str".encode(encoding="utf8") # encoding="utf8" ,
egg:
" ".encode(encoding="gbk")
b'\xd6\xd0\xb9\xfa'
" ".encode(encoding="utf8")
b'\xe4\xb8\xad\xe5\x9b\xbd'
# , , Unicode ASCII。 utf8 Unicode ( ), utf16
bytes 문자열 을 유 니 코드 형식 으로 변환 하려 면
bytes.decode( bytes ,encoding=" " ) # bytes : b+ , b'abc'
egg:
bytes.decode(b'\xe4\xb8\xad\xe5\x9b\xbd',encoding="utf-8")
' '
bytes.decode(b'\xd6\xd0\xb9\xfa',encoding="gbk")
' '
2.sys 모듈 의 stdout,stdin,stderr*
sys.stdout.write(str) # str pipe, pipe , :print(str)
sys.stdin.readline() # pipe , pipe ,
# , str unicode , bytes
정식 내용파일 src/main.py 만 들 기
import subprocess as sub
import sys
popen = sub.Popen("python ./test.py", stdin=sub.PIPE, stdout=sub.PIPE, stderr=sub.PIPE) # , , pipe
for line in sys.stdin: #
popen.stdin.write(line.encode(encoding="utf8")) # pip,write bytes
popen.stdin.flush() #
output = popen.stdout.readline() # , bytes
sys.stdout.write(bytes.decode(output)) # sys stdout , , print(out)
파일 src/test.py 만 들 기,
import sys
while True:
line = sys.stdin.readline() #
sys.stdout.write(line) # , print
# : , , line bytes unicode , sys.stdout.write(bytes.decode(output) str 。
추가 지식:python 의 다 중 프로 세 스 는 input()를 사용 합 니 다.python 3 다 중 프로 세 스 에서 하위 프로 세 스 가 키보드 에서 값 을 입력 하고 오류 문 제 를 실행 합 니 다.
python 에서 주 프로 세 스 는 키보드 에서 값 을 입력 할 수 있 습 니 다.하위 프로 세 스 는 허용 되 지 않 습 니 다.
이상 의 python 3 는 subprocess 모듈 을 통 해 스 크 립 트 를 호출 하고 스 크 립 트 와 상호작용 하 는 작업 은 바로 작은 편집 이 여러분 에 게 공유 하 는 모든 내용 입 니 다.참고 하 시기 바 랍 니 다.여러분 들 이 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Jupyter 공식 DockerHub에 대한 메모에 기재되어 있다. base-notebook minimal-notebook scipy-notebook tensorflow-notebook datascience-notebook pyspark-notebook all-s...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.