파이썬 파일 입출력 퀴즈
각각의 문제 + 정답 + 상세풀이 + 예시 코드

OX 10문항 + 5지선다형 10문항

OX 1 정답 O

문제

open('file.txt', 'w') 코드는 'file.txt' 파일이 존재하지 않으면 새로 생성한다.

상세 풀이

'w'(쓰기) 모드는 파일이 없으면 새 파일을 만들고, 이미 있으면 기존 내용을 지운 뒤 새로 씁니다.

예시 코드

with open('file.txt', 'w', encoding='utf-8') as f:
    f.write('새 파일 생성')

print('쓰기 완료')

출력 결과

쓰기 완료
OX 2 정답 X

문제

파일을 'r'(읽기) 모드로 열 때, 해당 파일이 없으면 빈 파일이 생성된다.

상세 풀이

'r' 모드는 기존 파일을 읽는 모드입니다. 파일이 없으면 새로 만들지 않고 FileNotFoundError가 발생합니다.

예시 코드

try:
    with open('없는파일.txt', 'r', encoding='utf-8') as f:
        print(f.read())
except FileNotFoundError:
    print('파일이 없습니다')

출력 결과

파일이 없습니다
OX 3 정답 X

문제

'a'(추가) 모드로 파일을 열면 기존 파일의 내용은 삭제되고 새로운 내용으로 덮어써진다.

상세 풀이

'a' 모드는 append의 뜻으로, 기존 내용 뒤에 새 내용을 추가합니다. 기존 내용을 삭제하는 것은 'w' 모드입니다.

예시 코드

with open('memo.txt', 'w', encoding='utf-8') as f:
    f.write('처음')

with open('memo.txt', 'a', encoding='utf-8') as f:
    f.write('추가')

with open('memo.txt', 'r', encoding='utf-8') as f:
    print(f.read())

출력 결과

처음추가
OX 4 정답 O

문제

with open(...) as f: 구문을 사용하면 파일을 수동으로 f.close() 해줄 필요가 없다.

상세 풀이

with 구문은 블록이 끝날 때 파일을 자동으로 닫아 줍니다. 오류가 발생해도 안전하게 자원을 정리할 수 있습니다.

예시 코드

with open('note.txt', 'w', encoding='utf-8') as f:
    f.write('안전하게 저장')

print('with 블록 종료')

출력 결과

with 블록 종료
OX 5 정답 X

문제

f.readline() 메서드는 파일 전체 내용을 하나의 문자열로 읽어온다.

상세 풀이

readline()은 한 줄만 읽습니다. 파일 전체를 하나의 문자열로 읽는 메서드는 read()입니다.

예시 코드

with open('lines.txt', 'w', encoding='utf-8') as f:
    f.write('첫째 줄\n둘째 줄')

with open('lines.txt', 'r', encoding='utf-8') as f:
    print(f.readline().strip())

출력 결과

첫째 줄
OX 6 정답 O

문제

f.readlines() 메서드는 파일의 모든 줄을 요소로 하는 리스트를 반환한다.

상세 풀이

readlines()는 각 줄을 문자열 요소로 담은 리스트를 반환합니다. 줄바꿈 문자도 포함될 수 있습니다.

예시 코드

with open('lines.txt', 'w', encoding='utf-8') as f:
    f.write('사과\n바나나\n')

with open('lines.txt', 'r', encoding='utf-8') as f:
    print(f.readlines())

출력 결과

['사과\n', '바나나\n']
OX 7 정답 O

문제

이미지나 동영상 같은 바이너리 파일을 다룰 때는 'wb', 'rb' 같은 모드를 사용해야 한다.

상세 풀이

이미지, 음성, 동영상은 텍스트가 아니라 바이트 데이터이므로 rb, wb처럼 b가 붙은 바이너리 모드를 사용합니다.

예시 코드

data = b'ABC'

with open('binary.bin', 'wb') as f:
    f.write(data)

with open('binary.bin', 'rb') as f:
    print(f.read())

출력 결과

b'ABC'
OX 8 정답 X

문제

f.write(123) 처럼 write() 메서드에는 숫자도 직접 인자로 전달할 수 있다.

상세 풀이

텍스트 모드의 write()는 문자열을 써야 합니다. 숫자를 저장하려면 str(123)처럼 문자열로 바꿔야 합니다.

예시 코드

with open('number.txt', 'w', encoding='utf-8') as f:
    f.write(str(123))

with open('number.txt', 'r', encoding='utf-8') as f:
    print(f.read())

출력 결과

123
OX 9 정답 O

문제

한글이 포함된 파일을 다룰 때는 encoding='utf-8'과 같이 인코딩을 지정하는 것이 안전하다.

상세 풀이

인코딩은 문자와 바이트 사이의 변환 규칙입니다. 한글 파일은 환경 차이로 깨질 수 있으므로 utf-8을 명시하면 안전합니다.

예시 코드

with open('korean.txt', 'w', encoding='utf-8') as f:
    f.write('한글 저장')

with open('korean.txt', 'r', encoding='utf-8') as f:
    print(f.read())

출력 결과

한글 저장
OX 10 정답 O

문제

os.path.exists('file.txt')는 'file.txt' 파일이 존재하면 True를 반환한다.

상세 풀이

os.path.exists()는 파일이나 폴더가 실제로 존재하는지 확인하여 True 또는 False를 반환합니다.

예시 코드

import os

with open('file.txt', 'w', encoding='utf-8') as f:
    f.write('ok')

print(os.path.exists('file.txt'))

출력 결과

True
5지선다 11 정답 w

문제

다음 중 파일의 내용을 처음부터 다시 쓰면서 기존 내용은 모두 삭제하는 파일 열기 모드는?

상세 풀이

w 모드는 write 모드입니다. 파일이 이미 있으면 내용을 모두 비우고 처음부터 다시 씁니다.

예시 코드

with open('data.txt', 'w', encoding='utf-8') as f:
    f.write('old')

with open('data.txt', 'w', encoding='utf-8') as f:
    f.write('new')

with open('data.txt', 'r', encoding='utf-8') as f:
    print(f.read())

출력 결과

new
5지선다 12 정답 list

문제

with open('data.txt', 'r') as f: lines = f.readlines() 실행 후, 변수 lines의 타입은 무엇인가?

상세 풀이

readlines()는 파일의 모든 줄을 읽어 리스트로 반환합니다.

예시 코드

with open('data.txt', 'w', encoding='utf-8') as f:
    f.write('A\nB\n')

with open('data.txt', 'r', encoding='utf-8') as f:
    lines = f.readlines()

print(type(lines).__name__)
print(lines)

출력 결과

list
['A\n', 'B\n']
5지선다 13 정답 try-except

문제

파일을 열 때 발생할 수 있는 FileNotFoundError를 처리하기 위한 가장 적절한 구문은?

상세 풀이

파일이 없을 때 프로그램이 중단되지 않도록 try-except로 예외를 처리합니다.

예시 코드

try:
    with open('missing.txt', 'r', encoding='utf-8') as f:
        print(f.read())
except FileNotFoundError:
    print('예외 처리 완료')

출력 결과

예외 처리 완료
5지선다 14 정답 f.writelines(data)

문제

리스트 data = ['apple\n', 'banana\n']를 파일에 쓰려고 할 때, 올바른 메서드는?

상세 풀이

writelines()는 문자열 리스트를 파일에 순서대로 씁니다. write()는 리스트가 아니라 문자열 하나를 받습니다.

예시 코드

data = ['apple\n', 'banana\n']

with open('fruits.txt', 'w', encoding='utf-8') as f:
    f.writelines(data)

with open('fruits.txt', 'r', encoding='utf-8') as f:
    print(f.read(), end='')

출력 결과

apple
banana
5지선다 15 정답 seek()

문제

파일의 특정 위치로 커서를 이동시킬 때 사용하는 메서드는?

상세 풀이

seek()는 파일 커서 위치를 이동합니다. tell()은 현재 위치를 알려 줍니다.

예시 코드

with open('abc.txt', 'w', encoding='utf-8') as f:
    f.write('abcdef')

with open('abc.txt', 'r', encoding='utf-8') as f:
    f.seek(2)
    print(f.read())

출력 결과

cdef
5지선다 16 정답 r+

문제

다음 파일 열기 모드 중 '읽기'와 '쓰기'가 모두 가능한 모드는?

상세 풀이

r+는 기존 파일을 읽기와 쓰기 모두 가능한 상태로 엽니다. 단, 파일이 반드시 존재해야 합니다.

예시 코드

with open('rw.txt', 'w', encoding='utf-8') as f:
    f.write('abc')

with open('rw.txt', 'r+', encoding='utf-8') as f:
    print(f.read())
    f.seek(0)
    f.write('XYZ')

with open('rw.txt', 'r', encoding='utf-8') as f:
    print(f.read())

출력 결과

abc
XYZ
5지선다 17 정답 f.close()를 호출하거나 with 구문을 사용한다

문제

f = open('test.txt', 'w') 이후 f.write('hello')를 실행했습니다. 파일에 내용이 확실히 저장되도록 보장하는 가장 좋은 방법은?

상세 풀이

파일을 닫으면 버퍼에 남아 있던 내용이 저장됩니다. with 구문을 쓰면 자동으로 close가 호출됩니다.

예시 코드

f = open('test.txt', 'w', encoding='utf-8')
f.write('hello')
f.close()

with open('test.txt', 'r', encoding='utf-8') as f:
    print(f.read())

출력 결과

hello
5지선다 18 정답 파일 내용은 '123456'이다.

문제

with open('a.txt','w') as f: f.write('123') 다음에 with open('a.txt','a') as f: f.write('456')를 실행하면?

상세 풀이

첫 번째 코드는 123을 쓰고, 두 번째 코드는 a 모드로 기존 내용 뒤에 456을 추가합니다.

예시 코드

with open('a.txt', 'w', encoding='utf-8') as f:
    f.write('123')

with open('a.txt', 'a', encoding='utf-8') as f:
    f.write('456')

with open('a.txt', 'r', encoding='utf-8') as f:
    print(f.read())

출력 결과

123456
5지선다 19 정답 새로운 빈 파일이 생성됨

문제

존재하지 않는 파일을 'w' 모드로 열 때 발생하는 일은?

상세 풀이

w 모드는 파일이 없으면 새 파일을 만듭니다. 이후 write()를 하지 않으면 빈 파일 상태로 남습니다.

예시 코드

with open('new_empty.txt', 'w', encoding='utf-8') as f:
    pass

with open('new_empty.txt', 'r', encoding='utf-8') as f:
    content = f.read()

print('길이:', len(content))

출력 결과

길이: 0
5지선다 20 정답 바이트와 문자열 사이의 변환 규칙을 지정하기 위해

문제

encoding 인자의 주된 용도는 무엇인가?

상세 풀이

파일은 실제로 바이트로 저장됩니다. encoding은 바이트를 문자로 읽고, 문자를 바이트로 저장하는 규칙입니다.

예시 코드

text = '파이썬'

with open('enc.txt', 'w', encoding='utf-8') as f:
    f.write(text)

with open('enc.txt', 'r', encoding='utf-8') as f:
    print(f.read())

출력 결과

파이썬