>백엔드 개발 >파이썬 튜토리얼 >Python 파일을 읽고 쓰는 방법과 파일 문자 인코딩을 설정하는 방법에 대한 자세한 설명

Python 파일을 읽고 쓰는 방법과 파일 문자 인코딩을 설정하는 방법에 대한 자세한 설명

巴扎黑
巴扎黑원래의
2017-08-18 13:56:192514검색

파일 읽기 및 쓰기 작업은 다양한 프로그래밍 언어에서 중요하고 일반적으로 사용되는 부분입니다. 오늘은 파이썬의 파일 읽기 및 쓰기 작업과 주의해야 할 사항에 대해 자세히 이야기해 보겠습니다.

1. Python이 파일을 엽니다.

코드는 다음과 같습니다.

f = open("d:\test.txt", "w")

지침:

첫 번째 매개 변수는 경로를 포함한 파일 이름입니다.

두 번째 매개 변수는 개방 모드 모드입니다

'r' : 읽기 전용(기본값. 파일이 없으면 오류 발생)

'w': 쓰기 전용(파일이 없으면 자동으로 생성)

'a': 파일 끝에 추가

'r+': 읽기 및 쓰기

바이너리 모드에서 파일을 열어야 하는 경우 "rb" "wb" 등과 같이 모드 뒤에 문자 "b"를 추가해야 합니다.

2. Python 파일 내용을 읽습니다. f.read([size])

Parameter size 읽기 횟수를 나타내며 생략 가능합니다. size 매개변수가 생략되면 파일의 전체 내용을 읽는다는 의미입니다.

f.readline()은 파일의 한 줄 내용을 읽습니다. f.readlines()는 모든 줄을 배열 [line1, line2,…lineN]으로 읽습니다.

f = open('./pythontab.txt', 'r')
content = f.read()
print content

이 방법은 효율성을 높이기 위해 모든 파일 내용을 메모리에 로드하는 것을 방지하는 데 자주 사용됩니다.

3. Python은 f.write(string) 파일에 씁니다.

파일에 문자열 쓰기

f = open('./pythontab.txt', 'r+')
f.write('Hello, Pythontab.com')
f.close()

참고: 쓰기가 끝나면 문자열 뒤에 "n"을 추가하여 개행을 나타낼 수 있습니다. 마지막에 f.close()를 사용하면 파일이 닫힙니다. 그렇지 않으면 특히 동시성이 높은 상황에서 예외가 발생할 수 있습니다.

4. 파일 내 콘텐츠 위치 지정

f.read()를 읽은 후 파일 포인터가 파일 끝에 도달하면 다시 f.read()를 사용하면 읽은 콘텐츠가 비어 있는 것으로 확인됩니다. 다시 읽으려면 모든 콘텐츠에 대해 위치 포인터를 파일의 시작 부분으로 이동해야 합니다:

f.seek(0)

이 함수의 형식은 다음과 같습니다(단위는 바이트): f .seek(offset, from_what) from_what은 읽기 시작 위치를 나타내며, offset from_what에서 일정 거리만큼 이동한다는 의미입니다. 예를 들어 f.seek(10, 3)은 세 번째 문자로 위치를 지정하고 10자 뒤로 이동한다는 의미입니다.

from_what 값이 0이면 파일의 시작을 나타냅니다. 기본값은 0이며, 이는 파일의 시작입니다. 전체 예는 다음과 같습니다.

f = open('./pythontab.txt', 'r+')
f.write('Hello, Pythontab.com')
f.seek(5)     # 定位到第6个byte
f.read(1)        
f.seek (-3, 2) #定位到第2个字符并再向前移动3个字符
f.read(1)

5. 파일을 닫습니다.

파일을 닫아 리소스를 해제합니다. 파일 작업이 완료된 후 리소스를 해제할 수 있는 f.close() 파일을 닫는 것을 잊지 마세요. ASCII 또는 gbk 인코딩 형식으로 사용하는 다른 프로그램 읽기 및 쓰기는 다음과 같습니다.

# coding=gbk
f = open('./pythontab.txt','r') # r 指示文件打开模式,即只读
s1 = f.read()
s2 = f.readline()
s3 = f.readlines() #读出所有内容
f.close()
f = open('./pythontab.txt','w') # w 写文件
11 f.write(s1)
12 f.writelines(s2) # 没有writeline
13 f.close()

6. f.writelines는 개행 문자를 출력하지 않습니다.

Python 유니코드 파일 읽기 및 쓰기:

# coding=gbk
import codecs
f = codecs.open('./pythontab.txt','a','utf-8')
f.write(u'中文')
s = '中文'
f.write(s.decode('gbk'))
f.close()
f = codecs.open('./pythontab.txt','r','utf-8')
s = f.readlines()
f.close()
for line in s:
    print line.encode('gbk')

7. Python 코드 파일의 인코딩

py 파일의 기본값은 ASCII 인코딩이며, 중국어는 표시될 때 ASCII에서 시스템 기본 인코딩으로 변환되며 오류가 발생합니다: SyntaxError: Non-ASCII 문자. 코드 파일의 첫 번째 또는 두 번째 줄에 인코딩 지침을 추가해야 합니다.

# 코딩=utf-8 ##Storage Chinese 문자 in utf-8 인코딩

print '중국어' 위와 같이 직접 입력한 문자열은 다음과 같습니다. 코드 파일의 인코딩이 처리됩니다. 유니코드 인코딩을 사용하는 경우 다음 두 가지 방법이 있습니다.

s1 = u'중국어' #u는 정보를 저장하기 위해 유니코드 인코딩을 사용한다는 의미입니다.

s2 = unicode('중국어',' gbk')

unicode는 내장 함수이며 두 번째 매개변수는 소스 문자열의 인코딩 형식을 나타냅니다.

decode는 모든 문자열을 유니코드 형식으로 변환하는 방법입니다. 매개변수는 소스 문자열의 인코딩 형식을 나타냅니다.

encode는 문자열을 매개변수에 지정된 형식으로 변환하는 메서드이기도 합니다.

Python 문자열 인코딩

유니코드 유형을 구성하려면 u'한자'를 사용하세요. 그렇지 않으면 str 유형이 구성됩니다.

str의 인코딩은 시스템 환경과 관련되며 일반적으로 sys.getfilesystemencoding에서 얻은 값입니다. ()

그래서 유니코드에서 str로 변환하려면 encode 방법을 사용해야 합니다.

str에서 유니코드로 변환하려면 decode를 사용해야 합니다

예:

# coding=utf-8   #默认编码格式为utf-8
s = u'中文' #unicode编码的文字
print s.encode('utf-8')   #转换成utf-8格式输出 
print s #效果与上面相同,似乎默认直接转换为指定编码

요약:

u=u'unicode Encoded text'

g=u.encode( 'gbk') #gbk 형식으로 변환

print g #현재 환경이 utf-8이고 gbk로 인코딩된 텍스트가 깨졌기 때문에 깨진 코드입니다

str=g.decode ('gbk').encode('utf- 8') # g를 gbk 인코딩 형식으로 읽고(gbk 인코딩이므로) utf-8 형식으로 변환하여 출력합니다

print str # 중국어는 정상적으로 표시됩니다

안전합니다 방법:

s.decode('gbk' ,'ignore').encode('utf-8′) #gbk 인코딩을 읽고(물론 gbk 인코딩 형식의 텍스트를 읽음) 잘못된 인코딩을 무시하고 utf로 변환 -8 인코딩 및 출력

디코드로 인해 함수 프로토타입은 decode([encoding], [errors='strict'])입니다. 두 번째 매개변수를 사용하여 오류 처리 전략을 제어할 수 있습니다. 잘못된 문자가 발견되면 예외가 발생합니다.

무시로 설정하면 잘못된 문자가 무시됩니다.

교체로 설정하면 잘못된 문자가 ?로 대체됩니다. 문자 참조가 사용됩니다.

위 내용은 Python 파일을 읽고 쓰는 방법과 파일 문자 인코딩을 설정하는 방법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.