>  기사  >  백엔드 개발  >  파이썬에서 파일을 읽고, 쓰고, 만드는 방법

파이썬에서 파일을 읽고, 쓰고, 만드는 방법

高洛峰
高洛峰원래의
2017-02-23 11:09:14991검색

파이썬에서 파일 및 폴더 작업(파일 작업 기능)에는 os 모듈과 quitil 모듈이 필요합니다.

현재 작업 디렉터리, 즉 현재 Python 스크립트가 작동 중인 디렉터리 경로를 가져옵니다. os.getcwd()

지정된 디렉터리의 모든 파일 및 디렉터리 이름을 반환합니다. : os.listdir()

파일을 삭제하는 데 사용되는 함수: os.remove()

여러 디렉터리 삭제: os.removedirs(r "c:python")

주어진 내용 확인 경로가 파일인지 확인: os.path.isfile()

주어진 경로가 디렉터리인지 확인: os.path.isdir()

확인 절대 경로인지 여부: os.path.isabs()

주어진 경로가 실제로 존재하는지 확인: os.path.exists()

해당 경로의 디렉터리 이름과 파일 이름을 반환합니다. 경로: os.path.split() 예: os.path.split('/home/swaroop/byte/code/poem.txt') 결과: ('/home/swaroop/byte/code', 'poem.txt' )

분할 확장자 이름: os.path.splitext()

경로 이름 가져오기: os.path.dirname()

파일 이름 가져오기: os.path.basename ()

셸 명령 실행: os.system()

환경 변수 읽기 및 설정: os.getenv() 및 os.putenv()

는 줄 종결자를 제공합니다. 현재 플랫폼에서 사용됨: os.linesep Windows는 'rn'을 사용하고, Linux는 'n'을 사용하고, Mac은 'r'을 사용합니다.

사용 중인 플랫폼을 나타냅니다: os.name Windows의 경우 'nt'입니다. Linux/Unix 사용자의 경우 'posix'입니다.

이름 바꾸기: os.rename(old, new)

다중 레벨 디렉토리 생성: os.makedirs(r "c:pythontest")

단일 디렉토리 생성: os.mkdir("test")

파일 속성 가져오기: os.stat(file)

파일 권한 및 타임스탬프 수정: os.chmod (파일)

현재 프로세스 종료: os.exit()

파일 크기 가져오기: os.path.getsize(filename)


파일 작업:
os.mknod(" test.txt") 빈 파일 만들기
fp = open("test.txt",w) 파일을 직접 엽니다. 파일이 없으면 파일을 만듭니다

열기 모드 정보:

w는 쓰기용으로 열리고,
a는 추가 모드로 열립니다(EOF로 시작하고 필요한 경우 새 파일 생성)
r+는 읽기-쓰기 모드로 열립니다
w+ 읽기-쓰기 모드로 열기( w 참조)
a+ 읽기-쓰기 모드로 열기(a 참조)
rb 바이너리 읽기 모드로 열기
wb 바이너리 쓰기 모드로 열기(w 참조)
ab 바이너리 추가 모드로 열기(a 참조)
rb+ 바이너리 읽기-쓰기 모드로 열기(r+ 참조)
wb+ 바이너리 읽기-쓰기 모드로 열기(w+ 참조)
ab+ 바이너리 읽기-쓰기로 열기 모드(a+ 참조)

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

fp.readline([size]) # 한 줄을 읽습니다. size가 정의되어 있으면 줄의 일부만 반환하는 것이 가능합니다.

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

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

fp.writelines(seq) #Write seq 모든 내용이 기록됩니다. 파일에 추가합니다(한 번에 여러 줄이 기록됩니다). 이 함수는 또한 각 줄 뒤에 아무것도 추가하지 않고 충실하게 작성합니다.

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

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

fp.fileno() # 긴 정수 반환 "파일 레이블" 유형

fp.isatty() #파일이 터미널 장치 파일인지 여부(유닉스 시스템에서)

fp.tell() #현재 반환 파일 동작 표시 위치, 파일의 시작을 원점으로

fp.next() #다음 줄로 돌아가서 파일 동작 표시를 다음 줄로 이동합니다. for...in file과 같은 문에서 파일이 사용되면 순회를 구현하기 위해 next() 함수가 호출됩니다.

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

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

디렉터리 작업:
os.mkdir("file") 디렉터리 만들기
파일 복사:
shutil.copyfile("oldfile", "newfile") oldfile과 newfile은 모두 파일만 가능합니다
shutil.copy("oldfile","newfile") oldfile은 폴더만 될 수 있고, newfile은 파일 또는 대상 디렉터리일 수 있습니다.
폴더 복사:
shutil.copytree("olddir","newdir " ) olddir과 newdir은 모두 디렉터리일 수 있으며 newdir은 존재하지 않아야 합니다
파일(디렉터리) 이름 바꾸기
os.rename("oldname","newname") 파일 또는 디렉터리에 이 명령을 사용하세요.
파일 이동 (디렉터리)
shutil.move("oldpos","newpos")
파일 삭제
os.remove("file")
디렉토리 삭제
os.rmdir( "dir") 빈 디렉터리만 삭제할 수 있습니다
shutil.rmtree("dir") 빈 디렉터리와 콘텐츠가 있는 디렉터리 모두 삭제할 수 있습니다
디렉터리 변환
os.chdir("path") 경로 변경

Python은 파일을 읽고 씁니다

1.open
open을 사용하여 파일을 연 후에는 파일 개체의 close() 메서드를 호출하는 것을 기억해야 합니다. 예를 들어, try/finally 문을 사용하여 파일이 최종적으로 닫힐 수 있는지 확인할 수 있습니다.

file_object = open('thefile.txt')
시도:
all_the_text = file_object.read( )
마지막으로:
file_object.close( )

참고: 파일을 열 때 예외가 발생하면 파일 객체 file_object가 close() 메서드를 실행할 수 없기 때문에 open 문을 try 블록에 배치할 수 없습니다.

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 = 열기('abinfile ', 'rb')
시도:
True인 동안:
chunk = file_object.read(100)
청크가 아닌 경우:
break
do_something_with(chunk)
마침내 :
file_object.close( )

각 줄 읽기
list_of_all_the_lines = file_object.readlines( )

파일이 텍스트 파일인 경우 트래버스도 가능합니다. 직접 File 객체는 각 라인을 가져옵니다:

for line in file_object:
process line

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 # 200Mposition = 0lines = file.readlines(sizehint)while not 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() 함수는 파일 객체를 생성하는 데 사용되는데, 이는 더 명확할 수 있습니다. 내장 함수입니다. 매개변수를 살펴보겠습니다. 해당 매개변수는 모두 문자열 형식으로 전달됩니다. 이름은 파일의 이름입니다.
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 모드
name #파일 이름
newlines # 파일에서 사용된 개행 모드는 튜플
softspace #boolean 유형이며 일반적으로 0입니다. 인쇄를 읽고 쓰는 데 사용된다고 합니다

file:

F.read( [size] ) #size는 읽은 길이(바이트)입니다.
F.readline([size])
#줄을 읽습니다. 크기가 정의된 경우 줄의 일부만 반환할 수 있습니다.
F.readlines ([size])
# 파일의 각 줄을 목록의 구성원으로 취급하고 이 목록을 반환합니다. 실제로 루프에서 readline()을 호출하여 내부적으로 구현됩니다. size 매개변수가 제공되면 size는 읽은 내용의 전체 길이를 나타내며, 이는 파일의 일부만 읽을 수 있음을 의미합니다.
F.write(str)
#Write str을 파일에 씁니다. write()는 str 뒤에 개행 문자를 추가하지 않습니다.
F.writelines(seq)
#Write seq 모든 내용이 기록됩니다. 파일에. 이 함수는 또한 각 줄 뒤에 아무것도 추가하지 않고 충실하게 작성합니다.

다른 파일 방법:

F.close()
#파일을 닫습니다. Python은 더 이상 사용되지 않는 파일을 자동으로 닫습니다. 그러나 이 기능은 보장되지 않습니다. 직접 닫는 습관을 기르는 것이 가장 좋습니다. 파일을 닫은 후 조작하면 ValueError가 발생합니다.
F.flush()
#버퍼의 내용을 하드디스크에 씁니다
F.fileno()
# "파일 레이블" 유형의 긴 정수 반환
F.isatty()
#파일이 터미널 장치 파일인지 여부(유닉스 시스템의 경우)
F.tell()
#Returns the 파일 동작 표시의 현재 위치, 파일의 시작을 원점으로
F.next()
# 다음 줄로 돌아가서 파일 동작 표시를 다음 줄로 이동합니다. for ... in file과 같은 문에서 파일이 사용되면 순회를 구현하기 위해 next() 함수가 호출됩니다.
F.seek(offset[,whence])
#파일 연산 표시를 오프셋 위치로 이동합니다. 이 오프셋은 일반적으로 파일 시작 부분을 기준으로 계산되며 일반적으로 양수입니다. 그러나 wherece 매개변수가 제공되는 경우, 처음부터 계산을 시작하려면 0이 될 수 있고, 현재 위치를 원점으로 사용하려면 1이 될 수 있습니다. 2는 파일의 끝이 계산의 원본으로 사용됨을 나타냅니다. 파일을 a 또는 a+ 모드로 열면 쓰기 작업을 수행할 때마다 파일 작업 표시가 자동으로 파일 끝으로 돌아갑니다.
F.truncate([size])
#파일을 지정된 크기로 자릅니다. 기본값은 현재 파일 작업 표시 위치까지 자릅니다. 크기가 파일 크기보다 큰 경우 시스템에 따라 파일이 변경되지 않거나 해당 크기에 0으로 파일이 채워지거나 임의의 내용이 추가될 수 있습니다.

위 Python에서 파일을 읽고 쓰고 작성하는 방법(반드시 읽어야 함)은 모두 편집자가 공유한 내용이므로 참고가 되셨으면 좋겠습니다. PHP 중국어 홈페이지도 지원해 주시길 바랍니다. .

Python의 파일 읽기, 쓰기, 생성 방법에 대한 더 많은 기사를 보려면 PHP 중국어 웹사이트를 주목하세요!

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