> 백엔드 개발 > 파이썬 튜토리얼 > Python 파일 읽기 및 쓰기 방법에 대한 심층적인 이해

Python 파일 읽기 및 쓰기 방법에 대한 심층적인 이해

高洛峰
풀어 주다: 2017-03-17 17:14:48
원래의
1471명이 탐색했습니다.

1.open

open을 사용하여 파일을 연 후에는 반드시 파일객체의 close() 메서드를 호출해야 합니다. 예를 들어 try/finally 문을 사용하면 파일이 마지막에 닫힐 수 있는지 확인할 수 있습니다.

파일_객체 = open('thefile.txt')

시도:

 모두_the_text = file_object.read( )

finally:

file_object.close( )

참고: open 문은 다음과 같은 경우에 나타나기 때문에 try 블록에 넣을 수 없습니다. 파일이 열리면 예외가 발생하면 파일 객체 file_object가 close() 메서드를 실행할 수 없습니다.

2. 파일 읽기

텍스트 파일 읽기

input = open('data', 'r')

#두 번째 매개변수의 기본값은 r입니다.

input = open('data')

바이너리 파일 읽기

input = open('data', 'rb')

모든 콘텐츠 읽기

file_object = open('thefile.txt')

시도:

all_the_text = file_object.read( )

마지막으로:

file_object.close( )

고정 바이트 읽기

file_object = open('abinfile', 'rb' )

시도:

while True:

chunk = file_object.read(100)

if 덩어리가 아님:

                                                                                            

각 줄 읽기

list

_of_all_the_lines = file_object.

readline

s( )

파일이 텍스트 파일인 경우 파일 객체를 직접 탐색하여 각 줄을 얻을 수도 있습니다.

for line in file_object: 프로세스 라인

3. 파일 쓰기

텍스트 파일 쓰기

output = open('data', 'w')

바이너리 파일 쓰기

output = open('data', 'wb')

쓰기 파일 추가

output = open('data', 'w+')

데이터 쓰기

file_object = open('thefile.txt', 'w')

file_object.write(all_the_text)

file_object .close( )

여러 줄 쓰기

file_object.writelines(list_of_text_strings)

여러 줄을 쓰기 위해 writeline을 호출하면 성능에 영향을 미칩니다. 쓰기를 사용하여 한 번 쓰는 것보다 더 높습니다.

로그 파일을 처리할 때 다음과 같은 상황이 자주 발생합니다. 로그 파일이 너무 커서 한 번에 처리하기 위해 전체 파일을 메모리로 읽어들이는 것이 불가능합니다. 물리적 메모리가 2GB인 컴퓨터에서 2GB의 로그 파일을 처리하는 경우 한 번에 200MB의 콘텐츠만 처리해야 할 수도 있습니다.

Python

에서는 내장 File 객체가 이러한 작업을 수행하기 위해 readlines(sizehint)

함수

를 직접 제공합니다. 다음 코드를 예로 들어 보겠습니다.

file = open('test.log', 'r')sizehint = 209715200 # 200M

position

= 0lines = file.readlines(sizehint)while file.tell() - position < 0: position = file.tell() 행 = file.readlines(sizehint)

readlines(sizehint) 함수가 호출될 때마다 약 200MB의 데이터가 생성됩니다. 반환된 데이터는 완전한 행 데이터여야 합니다. 대부분의 경우 반환된 데이터의 바이트 수는 sizehint에 지정된 값보다 약간 큽니다(readlines(sizehint) 함수가 마지막으로 호출되는 경우 제외). ). 일반적으로 Python은 사용자가 지정한 sizehint 값을 내부 캐시 크기의 정수배로 자동 조정합니다. file은 Python의 특수한 유형으로, Python 프로그램에서 외부 파일을 조작하는 데 사용됩니다. Python의 모든 것은 객체이며 파일도 예외는 아닙니다. 파일에는 파일 메서드와 속성이 있습니다. 먼저 파일 객체를 생성하는 방법을 살펴보겠습니다.

file(name[, mode[, buffering]])

file() 함수는 파일 객체를 생성하는 데 사용됩니다. 별칭 open()은 아마도 내장 함수

라는 점을 더 명확하게 알 수 있습니다. 매개변수를 살펴보겠습니다. 해당 매개변수는 모두

문자열

형식으로 전달됩니다. 이름은 파일의 이름입니다.

mode는 개방형 모드이며, 선택적인 값은 r w a U이며, 이는 각각 읽기(기본값)와 쓰기를 나타내며 다양한 줄 바꿈을 지원하는 모드를 추가합니다. w 모드나 a 모드로 파일을 열었을 때 해당 파일이 없으면 자동으로 생성됩니다. 또한 기존 파일을 열기 위해 w 모드를 사용하면 원본 파일의 내용이 지워지는데, 이때 초기 파일 작업 표시가 파일의 시작 부분에 있기 때문입니다. 이때 쓰기 작업을 수행하면 원본 내용이 지워집니다. 반드시 삭제됩니다. 역사적인 이유로 인해 개행 문자는 시스템마다 다른 모드를 갖습니다. 예를 들어 Unix에서는 n이고 Windows에서는 'rn'입니다. r' 'n' 'rn'은 모두 개행 문자를 나타낼 수 있으며, 이 파일에 사용된 개행 문자를 저장하는 데 사용되는 튜플이 있습니다. 그러나 줄 바꿈에 대한 모드는 많지만 Python에서 읽을 때는 대신 n이 사용됩니다. 모드 문자 뒤에 두 개의 기호 + b t를 추가할 수도 있습니다. 이는 각각 파일을 동시에 읽고 쓸 수 있으며 파일을 바이너리 모드 또는 텍스트 모드(기본값)로 열 수 있음을 나타냅니다.

버퍼링 0이면 버퍼링이 없음을 의미하고, 1이면 "라인 버퍼링"을 의미하며, 1보다 큰 숫자이면 버퍼 크기를 의미합니다. 바이트.

파일 개체에는 고유한 속성과 메서드가 있습니다. 먼저 파일의 속성을 살펴보겠습니다.

closed #파일이 닫혔는지 표시하고 close()로 다시 작성

encoding #파일 인코딩

mode #Open 모드

이름 #File name

newlines # 파일에 사용된 개행 모드는 튜플

softspace #부울 유형, 일반적으로 0이며 에 사용된다고 합니다. print

파일 읽기 및 쓰기 방법:

F.read([size]) #size는 읽기 길이(바이트)입니다.

F.readline ([size ])

#줄을 읽습니다. size가 정의된 경우 줄의 일부만 반환할 수 있습니다.

F.readlines([size])

#파일의 각 줄 읽기 목록의 구성원 역할을 하며 목록을 반환합니다. 실제로 루프에서 readline()을 호출하여 내부적으로 구현됩니다. size 매개변수가 제공되면 size는 읽은 내용의 전체 길이를 나타내며, 이는 파일의 일부만 읽을 수 있음을 의미합니다.

F.write(str)

#Write str을 파일에 쓰면 write()는 str 뒤에 개행 문자를 추가하지 않습니다

F.writelines( seq)

#seq의 모든 내용을 파일에 씁니다. 이 함수는 또한 각 줄 뒤에 아무것도 추가하지 않고 충실하게 작성합니다.

파일의 다른 방법:

F.close()

#파일을 닫습니다. Python은 더 이상 사용되지 않는 파일을 자동으로 닫습니다. 그러나 이 기능은 보장되지 않습니다. 직접 닫는 습관을 기르는 것이 가장 좋습니다. 파일을 닫은 후 조작하면 ValueError가 발생합니다.

F.flush()

#버퍼의 내용을 하드디스크에 씁니다.

F.fileno()

#긴 정수 "파일 레이블"을 반환합니다.

F.isatty()

#파일이 터미널인지 여부 device file (유닉스 시스템에서)

F.tell()

# 파일 시작 부분을 원점으로 하여 파일 작업 표시의 현재 위치를 반환합니다.

F.next()

#다음 줄로 돌아가서 파일 연산 플래그를 다음 줄로 옮깁니다. for ... in file과 같은 문에서 파일이 사용되면 순회를 구현하기 위해 next() 함수가 호출됩니다.

F.seek(offset[,whence])

#파일 연산 표시를 오프셋 위치로 이동합니다. 이 오프셋은 일반적으로 파일 시작 부분을 기준으로 계산되며 일반적으로 양수입니다. 그러나 wherece 매개변수가 제공되는 경우, 처음부터 계산을 시작하려면 0이 될 수 있고, 현재 위치를 원점으로 사용하려면 1이 될 수 있습니다. 2는 파일의 끝이 계산의 원본으로 사용됨을 나타냅니다. 파일을 a 또는 a+ 모드로 열면 쓰기 작업을 수행할 때마다 파일 작업 표시가 자동으로 파일 끝으로 돌아갑니다.

F.truncate([size])

#파일을 지정된 크기로 자릅니다. 기본값은 현재 파일 작업 표시 위치까지 자릅니다. 크기가 파일 크기보다 큰 경우 시스템에 따라 파일이 변경되지 않거나 해당 크기에 0으로 파일이 채워지거나 임의의 내용이 추가될 수 있습니다.


위 내용은 Python 파일 읽기 및 쓰기 방법에 대한 심층적인 이해의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿