Python 데이터 지속성-파일 API
파이썬은 내장을 사용합니다 input() 과 print()표준 입력 / 출력 작업을 수행하는 기능. input () 함수는 표준 입력 스트림 장치, 즉 키보드에서 바이트를 읽습니다.
그만큼 print()반면에 기능은 표준 출력 스트림 장치, 즉 디스플레이 모니터로 데이터를 보냅니다. Python 프로그램은 표준 스트림 객체를 통해 이러한 IO 장치와 상호 작용합니다.stdin 과 stdout sys 모듈에 정의되어 있습니다.
그만큼 input()함수는 실제로 sys.stdin 객체의 readline () 메서드를 둘러싼 래퍼입니다. 입력 스트림의 모든 키 입력은 'Enter'키를 누를 때까지 수신됩니다.
>>> import sys
>>> x=sys.stdin.readline()
Welcome to TutorialsPoint
>>> x
'Welcome to TutorialsPoint\n'
참고로 readline()함수는 후행 '\ n'문자를 남깁니다. 표준 입력 스트림에서 데이터가 끝날 때까지 읽는 read () 메서드도 있습니다.Ctrl+D 캐릭터.
>>> x=sys.stdin.read()
Hello
Welcome to TutorialsPoint
>>> x
'Hello\nWelcome to TutorialsPoint\n'
비슷하게, print() stdout 객체의 write () 메서드를 에뮬레이트하는 편리한 함수입니다.
>>> x='Welcome to TutorialsPoint\n'
>>> sys.stdout.write(x)
Welcome to TutorialsPoint
26
stdin 및 stdout 사전 정의 된 스트림 객체와 마찬가지로 Python 프로그램은 디스크 파일 또는 네트워크 소켓에서 데이터를 읽고 데이터를 보낼 수 있습니다. 그들은 또한 스트림입니다. read () 메서드가있는 모든 개체는 입력 스트림입니다. write () 메서드가있는 모든 개체는 출력 스트림입니다. 스트림과의 통신은 내장 된 open () 함수를 사용하여 스트림 객체에 대한 참조를 얻음으로써 설정됩니다.
open () 함수
이 내장 함수는 다음 인수를 사용합니다.
f=open(name, mode, buffering)
name 매개 변수는 디스크 파일 또는 바이트 문자열의 이름이고, mode는 수행 할 작업 유형 (읽기, 쓰기, 추가 등)을 지정하는 선택적 한 문자 문자열이며 버퍼링 매개 변수는 0, 1 또는 -1임을 나타냅니다. 버퍼링은 해제, 설정 또는 시스템 기본값입니다.
파일 열기 모드는 아래 표에 따라 열거됩니다. 기본 모드는 'r'입니다.
Sr. 아니요 | 매개 변수 및 설명 |
---|---|
1 | R 읽기 위해 열기 (기본값) |
2 | W 쓰기 위해 열기, 먼저 파일 잘라 내기 |
삼 | X 새 파일을 만들고 쓰기 위해 엽니 다. |
4 | A 쓰기 위해 열기, 파일이있는 경우 파일 끝에 추가 |
5 | B 바이너리 모드 |
6 | T 텍스트 모드 (기본값) |
7 | + 업데이트 할 디스크 파일 열기 (읽기 및 쓰기) |
파일에 데이터를 저장하려면 'w'모드로 열어야합니다.
f=open('test.txt','w')
이 파일 객체는 출력 스트림으로 작동하며 write () 메서드에 액세스 할 수 있습니다. write () 메서드는이 객체에 문자열을 보내고 그 아래에있는 파일에 저장됩니다.
string="Hello TutorialsPoint\n"
f.write(string)
버퍼에 남아있는 데이터가 완전히 전송되도록 스트림을 닫는 것이 중요합니다.
file.close()
테스트 편집기 (예 : 메모장)를 사용하여 'test.txt'를 열어 파일이 성공적으로 생성되었는지 확인합니다.
'test.txt'의 내용을 프로그래밍 방식으로 읽으려면 'r'모드로 열어야합니다.
f=open('test.txt','r')
이 개체는 입력 스트림으로 작동합니다. Python은 다음을 사용하여 스트림에서 데이터를 가져올 수 있습니다.read() 방법.
string=f.read()
print (string)
파일의 내용이 Python 콘솔에 표시됩니다. File 객체는readline() EOF 문자를 만날 때까지 문자열을 읽을 수있는 메소드입니다.
그러나 동일한 파일을 'w'모드로 열어 추가 텍스트를 저장하면 이전 내용은 지워집니다. 쓰기 권한으로 파일을 열 때마다 새 파일 인 것처럼 처리됩니다. 기존 파일에 데이터를 추가하려면 추가 모드에 'a'를 사용하십시오.
f=open('test.txt','a')
f.write('Python Tutorials\n')
이제 파일에는 이전 및 새로 추가 된 문자열이 있습니다. 파일 객체는 또한writelines() 목록 개체의 각 문자열을 파일에 쓰는 메서드입니다.
f=open('test.txt','a')
lines=['Java Tutorials\n', 'DBMS tutorials\n', 'Mobile development tutorials\n']
f.writelines(lines)
f.close()
예
그만큼 readlines()메서드는 각각 파일의 한 줄을 나타내는 문자열 목록을 반환합니다. 파일 끝에 도달 할 때까지 파일을 한 줄씩 읽을 수도 있습니다.
f=open('test.txt','r')
while True:
line=f.readline()
if line=='' : break
print (line, end='')
f.close()
산출
Hello TutorialsPoint
Python Tutorials
Java Tutorials
DBMS tutorials
Mobile development tutorials
바이너리 모드
기본적으로 파일 개체에 대한 읽기 / 쓰기 작업은 텍스트 문자열 데이터에 대해 수행됩니다. 미디어 (mp3), 실행 파일 (exe), 그림 (jpg) 등과 같은 다른 유형의 파일을 처리하려면 읽기 / 쓰기 모드에 'b'접두사를 추가해야합니다.
다음 명령문은 문자열을 바이트로 변환하고 파일에 기록합니다.
f=open('test.bin', 'wb')
data=b"Hello World"
f.write(data)
f.close()
encode () 함수를 사용하여 텍스트 문자열을 바이트로 변환 할 수도 있습니다.
data="Hello World".encode('utf-8')
우리는 사용해야합니다 ‘rb’이진 파일을 읽는 모드. read () 메서드의 반환 된 값은 인쇄 전에 먼저 디코딩됩니다.
f=open('test.bin', 'rb')
data=f.read()
print (data.decode(encoding='utf-8'))
이진 파일에 정수 데이터를 쓰려면 정수 객체를 다음과 같이 바이트로 변환해야합니다. to_bytes() 방법.
n=25
n.to_bytes(8,'big')
f=open('test.bin', 'wb')
data=n.to_bytes(8,'big')
f.write(data)
바이너리 파일에서 다시 읽으려면 from_bytes () 함수를 사용하여 read () 함수의 출력을 정수로 변환하십시오.
f=open('test.bin', 'rb')
data=f.read()
n=int.from_bytes(data, 'big')
print (n)
부동 소수점 데이터의 경우 struct Python의 표준 라이브러리에서 모듈.
import struct
x=23.50
data=struct.pack('f',x)
f=open('test.bin', 'wb')
f.write(data)
read () 함수에서 문자열을 풀고 바이너리 파일에서 부동 데이터를 검색합니다.
f=open('test.bin', 'rb')
data=f.read()
x=struct.unpack('f', data)
print (x)
동시 읽기 / 쓰기
쓰기를 위해 파일을 열면 ( 'w'또는 'a'로) 읽을 수 없으며 그 반대의 경우도 마찬가지입니다. 그렇게하면 UnSupportedOperation 오류가 발생합니다. 다른 작업을 수행하기 전에 파일을 닫아야합니다.
두 작업을 동시에 수행하려면 mode 매개 변수에 '+'문자를 추가해야합니다. 따라서 'w +'또는 'r +'모드를 사용하면 파일을 닫지 않고도 write () 및 read () 메서드를 사용할 수 있습니다. 또한 File 객체는 원하는 바이트 위치로 스트림을 되 감는 seek () 함수를 지원합니다.
f=open('test.txt','w+')
f.write('Hello world')
f.seek(0,0)
data=f.read()
print (data)
f.close()
다음 표는 객체와 같은 파일에 사용할 수있는 모든 방법을 요약합니다.
Sr. 아니요 | 방법 및 설명 |
---|---|
1 | close() 파일을 닫습니다. 닫힌 파일은 더 이상 읽거나 쓸 수 없습니다. |
2 | flush() 내부 버퍼를 플러시합니다. |
삼 | fileno() 정수 파일 설명자를 반환합니다. |
4 | next() 호출 될 때마다 파일에서 다음 줄을 반환합니다. Python 3에서 next () 반복자를 사용합니다. |
5 | read([size]) 파일에서 최대 size 바이트를 읽습니다 (크기 바이트를 얻기 전에 읽기가 EOF에 도달하는 경우 더 적음). |
6 | readline([size]) 파일에서 한 줄 전체를 읽습니다. 후행 개행 문자는 문자열에 유지됩니다. |
7 | readlines([sizehint]) readline ()을 사용하여 EOF까지 읽고 행을 포함하는 목록을 반환합니다. |
8 | seek(offset[, whence]) 파일의 현재 위치를 설정합니다. 0 시작 1 현재 2 끝. |
9 | seek(offset[, whence]) 파일의 현재 위치를 설정합니다. 0 시작 1 현재 2 끝. |
10 | tell() 파일의 현재 위치를 반환합니다. |
11 | truncate([size]) 파일 크기를 자릅니다. |
12 | write(str) 파일에 문자열을 씁니다. 반환 값이 없습니다. |