2016-10-01 5 views
3

이 같은 'xxx.py'라는 이름의 파일이 있습니다출력 ASCII 문자는 파이썬에서 표준 출력으로 3

print("a simple string") 

와 나는 실행할 때이 (파이썬 3)과 같은 :

python xxx.py >atextfile.txt 

유니 코드 파일이 있습니다.

나는 ascii 파일을 원합니다.

ASCII 문자가 아닌 문자를 인쇄하려고하면 예외가 발생하더라도 상관 없습니다.

ASCII 코드를 출력 할 수있는 간단한 코드는 무엇입니까?

내 검색을 통해 이러한 단순한 문제에 대해 너무 장황하게 보인 솔루션이 나타납니다.

내가 설정 LC_CTYPE에서 배운 것을보고 [편집] : 나는 창에서 실행하고

을 7

  1. 내가 유니 코드 파일을 얻을 파워 쉘의 명령 행에서 실행 (두 바이트/문자)
  2. LC_CTYPE을 설정하지 않고 .bat 파일에서 실행하면 아스키 파일 (@jwodder가 지적한대로 utf-8 일 수 있음)이 표시됩니다.
  3. LC_CTYPE = ascii로 설정된 .bat 파일에서 실행될 때 나는 ascii 파일 (1 바이트/문자)로 추정됩니다.
+1

'printf()'는 어떻게 정의되어 있습니까? 표준 인코딩은'xxx.py'를 실행 한 셸의 로케일에 의해 정의됩니다. 'LC_TYPE = en_us python xxx.py> atextfile.txt'을 시도해 볼 수 있습니다. 'sys.stdout.encoding'의 값을 확인하십시오. – AChampion

+0

모든 ASCII 파일은 유니 코드 (특히 UTF-8) 파일입니다. 정확히'atextfile.txt'에 대해 당신이 바꾸려고하는 것은 무엇입니까? UTF-16과 같은 비 ASCII 호환 유니 코드 인코딩 중 하나입니까? – jwodder

+0

'print (sys.stdout)'란 무엇입니까? 'print (open ('atextfile.txt', 'rb'). read())'무엇입니까? 'print (locale.getpreferredencoding()) '란 무엇입니까? utf-16 문자 인코딩 "유니 코드 파일"을 사용하여 인코딩 된 텍스트 파일을 호출하지 마십시오. 유니 코드 문자열에는 파이썬에서 연관된 문자 인코딩이 없습니다. 여러 유니 코드를 사용하여 동일한 유니 코드 문자열을 바이트로 인코딩 할 수 있습니다. 디스크의 파일은 적절한 문자 인코딩이 주어진 텍스트로 해석 될 수있는 바이트 스트림입니다. – jfs

답변

0

stdout 인코딩은 파이썬 스크립트를 실행 환경, 예컨대 :

$ python -c "import sys; print(sys.stdout.encoding)" 
UTF-8 
$ LC_CTYPE=ascii python -c "import sys; print(sys.stdout.encoding)" 
US-ASCII 

스크립트를 실행하기 전에 환경을 조정 해보십시오에 의해 정의된다. PYTHONIOENCODING 환경 변수를 설정하여 파이썬의 인코딩 값을 강제 설정할 수 있습니다.

관련 문제