"""
파일을 다루는 데 다음 순서를 준수해야 한다.
1) open file
2) read/write file
3) close file
"""
# 파일 열기 'w' 는 write 모드
f = open('test.txt', 'w')
# 파일에 텍스트를 씀
for i in range(1, 11):
f.write(f'{i}번째 줄 ... \n')
# 파일 닫기
f.close()
# 인코딩 오류 발생시 File - Setting - File Encodings -에서 다음 항목을 UTF-8로 변경한다.
# with 구문: 리소스를 사용한 후 close() 메소드를 자동으로 호출
# with ... as 변수: 실행문
with open('test2.txt', mode = 'w', encoding= 'utf-8') as f:
f.write('Hello, Python\n')
f.write('점심 식사는 맛있게 하셨나요?\n')
f.write('0123456789\n')
#open
f = open('test.txt', mode = 'r', encoding='utf-8')
#read: read(), readline()
content = f.read() # 텍스트 문서 전체를 읽음
print(content)
#close
f.close()
실행 결과
1번째 줄 ...
2번째 줄 ...
3번째 줄 ...
4번째 줄 ...
5번째 줄 ...
6번째 줄 ...
7번째 줄 ...
8번째 줄 ...
9번째 줄 ...
10번째 줄 ...
#open
f = open('test.txt', mode = 'r', encoding='utf-8')
#read: read(), readline()
content = f.read() # 텍스트 문서 전체를 읽음
content = f.read()
print(content)
#close
f.close()
>> 실행 결과 없음
file pointer가 content = f.read() 첫 번째 실행시 파일을 읽으면서 file의 끝으로 이동.
다음 content = f.read() 실행시 포인터가 끝부분에 있으므로, 읽을 값이 없어서 None값이 content에 저장됨.
#open
f = open('test.txt', mode = 'r', encoding='utf-8')
#read: read(), readline()
# content = f.read() # 텍스트 문서 전체를 읽음
content = f.read(3) # read(n): n개의 문자만 읽음
print(content)
content = f.read(3) # read(n): n개의 문자만 읽음
print(content)
#close
f.close()
실행 결과
1번째
줄 <- _줄_ 총 3글자임
f = open('test2.txt', mode='r', encoding='utf-8')
line = f.readline() # 첫 번째 줄을 읽음
print(f'line: {line}, length: {len(line)}')
line = f.readline() # 첫 번째 줄을 읽음
print(f'line: {line}, length: {len(line)}')
f.close()
실행 결과
line: Hello, Python # Hello Python 뒤에 보이지 않는 {줄바꿈 \n}이 있음. 글자 수를 세 보면 13 + 1 (\n)
, length: 14
line: 점심 식사는 맛있게 하셨나요? # {점심 식사는 맛있게 하셨나요?}16 + {\n}1
, length: 17
line = f.readline()
line = line.strip() # 기존 line을 strip type로 저장(한 줄로)
print(f'line: {line}, length: {len(line)}')
line = f.readline().strip() # 위 결과를 한 줄로 입력
print(f'line: {line}, length: {len(line)}')
f.close()
실행 결과
1번째
줄
line: Hello, Python, length: 13
line: 점심 식사는 맛있게 하셨나요?, length: 16
print(' \t hello \t\n ')
print(' \t hello \t\n '.strip())
>> hello
>>hello
strip 함수는 White Space를 지워준다
# 무한 루프와 readline()을 사용해서 문서 끝까지 읽기
f = open('test2.txt', mode = 'r', encoding= 'utf-8')
while True: # 무한 루프
line = f.readline()
# read(), readline()은 문서 끝에 도달하면 빈 문자열('')을 리턴
if line == '': # 파일 끝(EOF: End of File)에 도달
break # 무한 루프 종료
print(line)
f.close()
f = open('test.txt', mode = 'r', encoding= 'utf-8')
line = f.readline()
while line:
# line이 빈 문자열이면 False, 그렇지 않으면 True
print(line.strip())
line = f.readline()
f.close()
with 구문을 이용한 문서 읽기
with open('test2.txt', mode = 'r', encoding='utf-8') as f:
line = f.readline()
while line:
print(line.strip())
line = f.readline()
f.close()
with와 for을 이용한 문서 읽기
"""
for line in file:
실행문
file에서 readline()을 호출한 결과를 line 변수에 저장
line이 빈 문자열('')이 아닐 때 실행문을 실행
line이 빈 문자열이면 for 루프 종료
"""
with open('test.txt', mode = 'r', encoding='utf-8')as f:
for line in f:
print(line.strip())
출력 결과
1번째 줄 ...
2번째 줄 ...
3번째 줄 ...
4번째 줄 ...
5번째 줄 ...
6번째 줄 ...
7번째 줄 ...
8번째 줄 ...
9번째 줄 ...
10번째 줄 ...
'Python > Python기초' 카테고리의 다른 글
Python 31_ cmd(command prompt)창으로 패키지 최신 버전으로 업그레이드 (0) | 2020.01.02 |
---|---|
Python 30_ 파일 디렉토리 다루기: 파일 열기 (0) | 2019.12.31 |
Python 28_ 파일 디렉토리 다루기, [os 모듈] 의 변수와 함수들 (0) | 2019.12.27 |
Python 27_ Inheritance 상속 (0) | 2019.12.26 |
Python 26_class 설계 + __**__ 더블 언더스코어 메소드 (0) | 2019.12.25 |