문자열으로 변환하십시오 바이트
39, m 이 코드를 사용하여 표준 출력입니다 i& afaq 외부 프로그램:
>>> from subprocess import *
>>> command_stdout = Popen(['ls', '-l'], stdout=PIPE).communicate()[0]
이 통신하십시오 () 메서드를 배열입니다 되돌려줍니다 바이트입니다:
>>> command_stdout
b'total 0\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file2\n'
그러나 I&; d like to # 39 로 출력물에는 작동합니까 표준 파이썬 구체화하십시오. 내가 이를 출력할 수 있도록 다음과 같습니다.
>>> print(command_stdout)
-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1
-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file2
39 의 생각해봤죠 that& 무너지잖아! [binascii.b2a_qp ()] [1] 방법을 사용할 수 있지만, 이 때, 나는 attaboy 같은 바이트입니다 어레이입니다 다시 찾았다.
>>> binascii.b2a_qp(command_stdout)
b'total 0\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file1\n-rw-rw-r-- 1 thomas thomas 0 Mar 3 07:03 file2\n'
How do I 변환하십시오 바이트입니다 값을 다시 구체화하십시오? 내 말은, name. domain. " batteries"; 대신 그렇게 합니다. # 39 와 같은 Python& nbsp; 3; d I& 수 있도록, 괜찮습니다.
[1]: http://docs.python.org/3.0/library/binascii.html = b2a # binascii.b2a_qp 강조표시할?
1923
18
생산할 수 있는 바이트입니다 객체에는 문자열으로 디코딩합니다 합니다.
You need to it 인되며 바이트 문자 (Unicode) 및 선반가공 문자열이어야 디코딩합니다 구체화하십시오.
파이썬 2 일
또는
파이썬 3 일
또는
이렇게 쉬운 것 같아요.
39 don& 모르는 경우, 파이썬 및 Python 에서 문자열을 입력할 인코딩 후 2, 3) 을 읽을 수 있는 이진 호환적 운행에서어떠한 고대 사용하여 ms-dos cp437 인코딩입니다:
영어가 아닌 '의' cp437 문자로 변환할 수 있기 때문에, 앞으로 심볼에는 인코딩입니다 알 수 없습니다. (영문 번역 및 UTF-8 인코딩을 않습니다를 존재하기 때문에 대부분의 싱글바이트).
Utf-8 은 임의의 이진 대한 입력입니다 디코딩 안전하지 않은 수도 있으므로 afaq afnor:
이는 당시 인기 (기본값입니다?) ',' latin-1 동일하게 적용됩니다. 위한 파이썬 2. [2] - [코드 페이지 레이아웃] 부족한 점을 볼 수 있는 '아닌' 여기가 파이썬 초크 범위 내에 있는 악명 높은 순서.
업데이트 20150604*: 파이썬 3 은 '수호가테스카피 오류가 있다는 소문이 들린다' 를 위한 전략 및 충돌 테스트를 필요로 하고 있지만, 데이터 손실 없이 물건을 인코딩입니다 이진 데이터 변환, ' [이진] - >. [str] - >. [이진] '또한 성능 및 안정성을 검증할 수 있습니다.
업데이트 20170116*: 덕분에 의해 주석문입니다 네이루 가능성도 있다. '오류' 박슬라시레프리스 처리기에서 함께 모든 알 수 없는 바이트입니다 이스케이프입니다 대폭 절감할 수 있습니다. 파이썬 대해서만 사용할 수 있는 3 도왔으매 심지어 다른 파이썬 버전을 계속 출력입니다 해결하십시오 대체하십시오 일치하지 않는 것입니다.
지켜보리니 [Python 의 유니코드 지원] [3] 자세한 내용은.
[2]: https://en.wikipedia.org/wiki/ISO/IEC_8859-1 # Codepage_layout [3]: https://docs.python.org/3/howto/unicode.html # 파이썬 유니코드 지원을 한다.
[In 파이썬 3] [1],, '는' " 기본값입니다 인코딩입니다 utf-8" 수 있도록 직접 사용:
것과 같습니다
반면, [in 파이썬 2], [2] 인코딩입니다 기본적으로 기본값입니다 구체화하십시오 인코딩입니다. 따라서 콩지름에:
여기서 '인코딩입니다 "는 인코딩입니다 운영까지도.
[ Note:] [2] 에 대한 지원, nbsp, 2.7 Python& 키워드 인수만 에 추가되었다.
[1]: https://docs.python.org/3/library/stdtypes.html # 비트러스데코드 [2]: https://docs.python.org/2.7/library/stdtypes.html # 스트리지코드
실제로 이 스맥랜드의 한다고 생각합니다.
39 의 aaron& 오토메이티드 맞자나 단, you need to know) 어떤 인코딩입니다 사용할 수 있습니다. Windows 는 & # 39, & # 39, 1252년 indows 및 있다고 믿는다. 또 일부 특이한 것은 문자 (ascii) 만 있으면 만들 수 있지만, 그 내용을 말한다.
True 로 universal_newlines 설정 (예:
# 39 의 @Aaron Maenpaa& 오토메이티드 작동을 동안 사용자 [최근] [2]:
>. 더 간단하게 유지됩니까 운행에서어떠한? & # 39, & # 39, 이데코드 프한트드프리드 () (ASCII" ";) [.] # 39 의 it& so long!
사용할 수 있습니다.
'디코딩합니다 ()' 는 [표준 인수] [3]:
>. '고데치스데코드 (obj, 인코딩입니다 = & # 39, & # 39,, # 39 utf-8& 오류뿐만 = strict& # 39;)'
[2]: # comment55151210_33688948 https://stackoverflow.com/questions/33688837/urllib-for-python-3/33688948 [3]: https://docs.python.org/3/library/stdtypes.html # 바이트입니다 및 bytearray 운영체
이후, you have a 보다 직접적인 정보를 묻는 질문에 '이 실제로 사용할 수 있는 하위' 출력입니다 외곽진입 허용합니다 [ 인코딩입니다 ] '이후' Popen (https://docs.python.org/3/library/subprocess.html # 자주 사용되는 인수만) 키워드 (python 에서 3.6+):
다른 사용자를 위한 것이 일반적인 대답 바이트입니다 디코딩합니다 텍스트:
인수 없이 ['시s.제더포텐코딩 ()'] (https://docs.python.org/3/library/sys.html # 시s.제더포텐코딩) 가 사용됩니다. 데이터가 없는 경우 '시s.제더포텐코딩 관심용 인코딩입니다 명시적으로 지정해야 합니다 ()' 의 ['디코딩합니다'] (https://docs.python.org/3/library/stdtypes.html # 비트러스데코드) 문의:
텍스트 파일로 알고 바이트 순서를 해석할 수 있습니다 해당 문자 인코딩:
예:
'ls' 명령어를 해석할 수 있는 텍스트, t # 39 can& 출력됩니다. 파일 이름 unix 에서 b& # 39 를 제외한 모든 일련의 바이트입니다 슬래시 (slash), '수', 제로 / # 39.
39, \0& b& # 39 ',':
Utf-8 인코딩을 사용하는 등 '수프' 이니고데데코디로어 바이트입니다 디코딩합니다 하는 의문이 제기됐다.
더 악화될 수 있다. 이 디코딩 장애가 발생할 경우 자동으로 지속되었고, [글자 깨짐] (https://en.wikipedia.org/wiki/Mojibake) 잘못 사용할 경우 호환되지 않는 인코딩입니다:
하지만 여전히 비인식 프로그램에 오류가 있는 데이터가 손상됨 발생했습니다.
일반적으로 어떤 문자 인코딩 에 포함되지 않은 바이트 순서를 사용할 수 있다. 이 정보 아웃오브밴드 통신하도록 있습니다. 일부 결과를 짐작할 수 있는 '가 될 가능성이 더 크다고, 따라서 다른 디바이스보다 카르데' 모듈에서는 문자 인코딩. 여러 다른 위치에서 하나의 문자 인코딩 파이썬 스크립트를 사용할 수 있습니다.
'ls' 를 사용하여 ['오스릭프스데코드 ()' 는 파이썬 문자열 출력 변환할 수 있습니다. [우네코다블 대해서도 성공할 수 있는 기능을] () 파일] (https://www.python.org/dev/peps/pep-0383/) (사용한다 '시s.제피리시스템렌코딩 수호가테스카피 오류 처리기 ()' 와 '에서' Unix):
' ()' 은 원래 바이트입니다 세스페센코드 afaq 사용할 수 있습니다.
'진정한' 다음 '=' 는 하위 매개변수입니다 universal_newlines 전달하는 경우 '로카레이제프레퍼덴코딩 디코딩합니다 바이트입니다 (False)' 을 할 수 있다 (예: '에서' cp1252 indows.
작업을 바이트 스트림을 디코딩할 수 ['리오티스티우라프 ()'] (https://docs.python.org/3/library/io.html # 리오티스티우라프) 사용할 수 있습니다. [예] (https://stackoverflow.com/a/25945031/4279).
다른 문자를 나타내기 위해 다른 명령을 사용할 수 있습니다. 예를 들어, '출력입니다 dir 명령 (' cmd ')' 의 내부 cp437 사용할 수 있습니다. 디코딩합니다 수 있다. 출력입니다 전날에약혼자에게 통과할 수 있는 인코딩입니다 명시적으로 (파이썬 3.6+):
'오스트리스타디르 ()' (Windows 사용하는 파일 이름이 다를 수 있습니다. 예를 들어, '& # 39, 유니코드 apiu) # 39, & # 39 을 (를)', '\xb6& 대체할 수 있습니다.' s # 39 -python& \x14& # 39;;
39, b& # 39, '를' cp437 코텍이 매핑하므로 \x14& 제어 문자 대신 U + 0014
U + 00B6 (& # 182;). 임의의 유니코드 문자를 지원할 수 있는 파일 이름은 https://stackoverflow.com/q/33936074/4279 참조
만일 당신이 디코딩합니다 ':' () 에 의해 다음과 같은 결과를 얻을 수 없을 것이다.
>. 아트리부텔라로: # 39, & # 39 str&. # 39, & # 39 decode& 객체에는 속성이 없습니다.
캐스트 직선입니다 인할지 인코딩입니다 유형을 지정할 수도 있습니다.
Windows 에서 데이터를 처리하는 경우, 내 대답은 시스템 (\r\n '와' 선 끝)
왜? 이 시도하시겠습니까 수신기마다 multiline 린퍼트.t스트:
네 모든 줄 끝이 두 배로 높아진다는 등 추가 빈 (\r\r\n '를') 이다. # 39 의 텍스트 읽기 python& 일반적으로 '\n' 만 사용할 수 있도록 기능을 정상화 문장열 선 끝. 이진 데이터를 받을 경우, 파이썬 Windows 시스템에서 그렇게 할 수 있는 기회가 있지 않습니다. 따라서
원본 파일을 복제하는 것이다.
I made a 함수은 바뀌엇어요 청소하려면
출력:
이진 데이터 읽기 / 쓰기 위해, 또는 에서 사용하는 표준 바이너리 스트리밍합니다 밑에 있는 것을 의미한다. 예를 들어, stdout, 사용 '을 쓰기 바이트입니다 시s.스트더t.부퍼트라이트 (b& # 39, abc& # 39;)'.
뿐만 아니라 모든 바이트입니다 변환할지 스케쳐내 변환할 문자열을 바이트입니다:
그러나 매우 효율적인 아니다. 이 사진 9 로 발쿰치로 2gb/s MB 입니다.
, &Quot 셸 명령을 실행할 수 있으며, 특정 사용자의 경우, 그 대신 텍스트로 출력입니다 bytes" 콩지름에 ['서브프록스트런'] [1] 에서 3.7, 파이썬 및 통과 = True 'text' (= 진정한 '아니라' capture_output 캡처하려면 출력물에는)
예전에는 'text' '및' (뭐, 앨리어스) 의 파이썬 3.7 불렀으매 universal_newlines 바뀌었다. 파이썬 버전을 지원할 수 있는 universal_newlines 스케쳐내 전에 '진정한' 진정한 '대신' 텍스트 = = 3.7 전달하십시오
[1]: https://docs.python.org/3/library/subprocess.html # 서브프록스트런