- r: 파일 읽기
- w: 파일 쓰기( 파일이 존재 하지 않으면 파일생성, 파일이 존재하면 덮어씀 )
- x: 파일 쓰기( 파일이 존재 하지 않을 경우에만 해당 )
- a: 파일 추가하기(파일이 존재하면 파일의 끝에서부터 쓴다)
- t(또는 아무것도 명시하지 않음): 텍스트타입
- b: 이진 타입
- 다사용하면 꼭 닫아야 한다.
8.1.1 텍스트파일 쓰기:write()
poem = '''There was a young lady named Bright, Whose speed was far faster than light; She set out one day In a relative way, And returned on the previous night.''' len(poem)
150
fout = open('relativity', 'wt') fout.write(poem)
150
fout.close()
fout = open('relativity2', 'wt') print(poem, file=fout) fout.close()
fout = open('relativity3', 'wt') print(poem, file=fout, sep='', end='') fout.close()
fout = open('relativity4', 'wt') size = len(poem) offset = 0 chunk = 100 while True: if offset > size: break print(fout.write(poem[offset:offset+chunk])) offset+=chunk
100 50
fout.close()
fout = open('relativity', 'xt')
FileExistsError Traceback (most recent call last)
<ipython-input-12-e76edf949aa7> in <module>()
----> 1 fout = open('relativity', 'xt')
FileExistsError: [Errno 17] File exists: 'relativity'
try:
fout = open('relativity', 'xt')
fout.write('stomp stomp stomp')
except FileExistsError:
print('relativity already exists!. That was a close one')
relativity already exists!. That was a close one
8.1.2 텍스트 파일 읽기: read(), readline(), readlines()
poem = ''
fin = open('relativity', 'rt')
poem = fin.read()
fin.close()
len(poem)
150
poem = ''
fin = open('relativity', 'rt')
chunk = 100
while True:
fragment = fin.read(chunk)
if not fragment:
break
poem += fragment
fin.close()
len(poem)
150
poem = ''
fin = open('relativity', 'rt')
while True:
line = fin.readline()
if not line:
break
poem += line
fin.close()
len(poem)
150
poem = ''
fin = open('relativity', 'rt')
for line in fin:
poem += line
fin.close()
len(poem)
150
fin = open('relativity', 'rt')
lines = fin.readlines()
fin.close()
print(len(lines), 'lines read')
5 lines read
for line in lines:
print(line, end='')
There was a young lady named Bright, Whose speed was far faster than light; She set out one day In a relative way, And returned on the previous night.
8.1.3 이진 파일 쓰기:write()
- mode에 ‘b’를 포함시키면 파일을 이진 모드로 연다.
bdata = bytes(range(0,255)) len(bdata)
255
f = open('bfile', 'wb') f.write(bdata) f.close()
f = open('bfile', 'wb') size = len(bdata) offset = 0 chunk = 100 while True: if offset > size: break f.write(bdata[offset:offset+chunk]) offset += chunk
f.close()
8.1.4 이진 파일 읽기: read()
fin = open('bfile', 'rb') data = fin.read() len(data)
255
fin.close()
8.1.5 자동으로 파일 닫기: with
with open('relativity', 'wt') as fout: fout.write(poem)
8.1.6 파일 위치 찾기:seek()
fin = open('bfile', 'rb') fin.tell()
0
fin.seek(254)
254
bdata = fin.read() len(bdata)
1
bdata[0]
254
import os os.SEEK_SET
0
os.SEEK_CUR
1
os.SEEK_END
2
fin = open('bfile', 'rb')
fin.seek(-1, 2)
254
fin.tell()
254
bdata = fin.read() len(bdata)
1
bdata[0]
254
fin = open('bfile', 'rb')
fin.seek(254, 0)
254
fin.tell()
254
fin.seek(1, 1)
255
fin.tell()
255
bdata = fin.read() len(bdata)
0
bdata[0]
IndexError Traceback (most recent call last)
<ipython-input-112-5edc6256e1fd> in <module>()
----> 1 bdata[0]
IndexError: index out of range
Comments