test_file.txt
I am you.
You love me.
Hello W.
open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)
문자 | 의미 |
---|---|
'r' | 읽기용으로 엽니다 (기본값) |
'w' | 쓰기용으로 엽니다, 파일을 먼저 자릅니다. |
'x' | 독점적인 파일 만들기용으로 엽니다, 이미 존재하는 경우에는 실패합니다. |
'a' | 쓰기용으로 엽니다, 파일이 존재하는 경우는 파일의 끝에 덧붙입니다 |
'b' | 바이너리 모드 |
't' | 텍스트 모드 (기본값) |
'+' | 갱신(읽기 및 쓰기)용으로 디스크 파일을 엽니다 |
'U' | 유니버설 줄 넘김 모드 (디프리케이트 되었습니다) |
def main():
txt_file = open('test_file.txt')
# txt_file = open('test_file.txt', 'r')
lines = txt_file.readlines()
for line in lines:
print(line)
txt_file.close()
if __name__ == "__main__":
main()
I am you.
You love me.
Hello W.
빈줄이 하나씩 보이는데, readlines() 함수가 개행문자를 포함하여 텍스트 파일을 읽고 있음
open을 with 키워드와 함께 사용하여 close()를 호출해주는 번거로움을 없앰
open의 결과가 iterable하기 때문에 반복문의 대상 object로 쓸 수 있음
iterable하다는 것을 확인하기 위해 is_iterable()함수를 만들고, int type인 object와 비교하여 iterable 하다는 것을 확인하였다.
for 문을 이용하여 한줄씩 출력 할 수 있음
출력시에, 각 줄에서 개행문자를 제거하기 위해 strip() 함수를 호출했다.
def is_iterable(obj):
try:
iter(obj)
except TypeError:
return False
return True
def main():
with open('test_file.txt', 'r') as f:
result = is_iterable(f)
print("File object is iterable? " + str(result))
a = 0
result = is_iterable(a)
print("File object is iterable? " + str(result))
for line in f:
print(line.strip())
if __name__ == "__main__":
main()
File object is iterable? True
File object is iterable? False
I am you.
You love me.
Hello W.