06. 파일 및 디렉터리

송지윤·2025년 7월 31일

Python

목록 보기
13/20

기본 입출력

표준 출력

어떤 내용을 화면에 출력할 때는 파이썬 내장 함수 print()를 사용한다.

print(help(print))
// print(*args, sep=' ', end='\n', file=None, flush=False)

print() 함수의 다양한 속성을 매개변수로 지정할 수 있는 것을 확인할 수 있다.

  • sep : 매개변수 출력 시 값을 구분하는 문자. 기본값은 공백
  • end : 마지막 값 다음에 입력할 문자. 기본값은 줄바꿈
  • file : 파일로 출력할지를 지정. 기본값은 화면에 출력하는 표준 출력
  • flush : 당장 내보내기 할지를 지정. 기본값은 False이며 True로 변경하면 즉시 파일로 내보내기

표준 입력

실행 화면에서 사용자에게 직접 입력을 받을 때는 내장 함수 input()을 사용한다. 함수의 매개변수로 화면에 출력할 텍스트를 지정할 수 있고, 사용자가 입력한 문자열을 리턴한다.

name = input('이름을 입력하세요 : ')
print('입력한 이름은 %s입니다.' % name)

출력

이름을 입력하세요 : 홍길동
입력한 이름은 홍길동입니다.

홍길동이라는 이름을 입력받아 name 변수에 할당한 다음 name을 출력하면 입력받은 문자열을 그대로 출력하는 것을 알 수 있다.

파일 입출력

파일의 내용을 읽거나 쓸 때는 파이썬 내장 함수 open() 함수를 사용한다. open() 함수는 하드 디스크에 저장된 파일을 열어서 데이터를 읽어오고, 파일에 내용을 출력한다. open() 함수의 사용 방법은 다음과 같다.

파일 객체 = open(file, mode='r', encoding=None, newline=None, ...)

매개변수로 파일명과 파일 열기 모드 등을 설정할 수 있고, 한글처럼 ASCII 이외의 문자를 사용할 때는 인코딩 옵션을 UTF-8이나 CP949, 혹은 EUC-KR로 지정한다. 그러나 파이썬3 버전부터는 경로명이나 파일명에 한글이 있어도 문제없이 동작한다.

open() 함수는 다음 표에 나오는 모드에 따라 생성된 파일 객체를 리턴하고, 파일을 열 수 없으면 OSError가 발생한다.

  • r : 읽기용으로 열기(기본값)(생략 가능)
  • w : 쓰기용으로 열고 기존 내용에 덮어쓰기 (파일이 없다면 새롭게 생성하고 write 해줌 (단, 디렉토리가 없다면 에러))
  • a : 쓰기용으로 열고 기존 내용 다음에 덧붙이기
  • x : 파일을 단독으로 생성하여 열고, 파일이 이미 존재하는 경우 파일 열기 실패
  • b : 바이너리(이진) 모드로 열기 (이미지 등)
  • t : 텍스트 모드로 열기(기본값)
  • + : 파일 업데이트를 위한 읽기와 쓰기 모두 가능
f = open('test.txt', 'w')
# mode='w'

print('file write test', file=f)
f.close()
# close 안해주면 버퍼에만 입력이 되고 파일에 입력이 안됨

새로운 디렉터리 생성 후 파일을 만들고 내용 작성

import os

os.mkdir('test')
f = open('test/test2.txt', 'w')
# mode='w'

print('file write test2', file=f)
f.close()

fr = open('test.txt')
r = fr.read()
print(r)

with문을 사용하면 close() 함수를 실행하지 않아도 자동으로 파일을 닫아주는 코드르 작성할 수 있다. with문은 콜론으로 선언하고 print() 함수를 호출하도록 구현한다. with문과 사용된 open()함수는 리턴한 파일 객체를 as 뒤에 나온 변수에 넣는다.

with open('auto.txt', 'w') as f :
	print('auto close test', file=f)

auto.txt 파일을 열어보면 close() 함수를 수행하지 않았어도 내용이 출력된 것을 볼 수 있다.

open() 함수는 파일 형태의 객체를 리턴하는데, 이 객체로 사용할 수 있는 읽기와 쓰기에 관련된 다양한 함수는 다음과 같다.

  • readline() : 한 줄 읽기
  • readlines() : 모든 줄을 한 번에 읽은 후 한 줄씩 처리
  • write() : 문자열을 파일에 쓰기
  • writelines() : 문자열 리스트를 파일에 쓰기
contents = ['read1', 'read2', 'read3']
with open('list.txt', 'w') as f :
	f.write('list print\n')
    f.writelines(contents)

list print
read1read2read3
이렇게 작성돼있음
만약 리스트에 있는 애용을 하나씩 꺼내서 파일에 출력하고 싶다면, 반복문을 사용하여 리스트의 요소를 하나씩 꺼내어 파일에 출력하면 된다.

contents = ['read1', 'read2', 'read3']
with open('list.txt', 'w') as fl :
	fl.write('list print\n')
	for c in contents :
		fl.write(c + '\n')

list print
read1
read2
read3

0개의 댓글