파일 시스템 (File system)

is Yoon·2023년 9월 15일
0

Python

목록 보기
11/17

📁 파일 읽고 쓰기

  • 파일 객체 = open("파일이름.확장자", "모드")
  • with open("파일명", "모드") as 파일 객체 :
모드의미
r읽기 모드로 파일 열기 (기본값)
w쓰기 모드로 파일 열기 - 같은 이름의 파일이 있으면 기존 내용 모두 삭제
x쓰기 모드로 파일 열기 - 같은 이름의 파일이 있으면 오류 발생
a추가 모드로 파일 열기 - 같은 이름의 파일이 없으면 w와 기능이 같음
b바이너리 파일 모드로 파일 열기
t텍스트 파일 모드로 파일 열기 (기본값)

모드는 혼합하여 사용도 가능하다.


✔️ 쓰기 모드(w)로 파일 열기 - open, write, close

  • write() : () 안의 내용을 파일에 작성
f = open('./myFile.txt', 'w')    # 파일 생성 : 본 폴더에 쓰기 모드로 생성
f.write(x)                       # 내용 작성 - 변수 x에 저장된 값 작성
f.close()                        # 파일 닫기 (저장)

✔️ 읽기 모드(r)로 파일 열기 - read, readline, readlines

  • read() : 파일의 내용 전체를 문자열로 반환
  • readline() : 파일의 문장 한 라인을 읽어 문자열로 반환
  • readlines() : 파일의 모든 라인을 읽어서 각각의 요소를 갖는 리스트로 반환
  • read(n) : n번재 글짜까지 호출
f = open('./myFile.txt', 'r')    # 파일 오픈 : 본 폴더에서 읽기 모드로 오픈
read_all = f.read()              # 모든 내용 호출
read_one_line = f.readline()     # 첫 번째 줄 호출
read_line_text = f.readline(n)   # 첫 번째 줄 n번재 글짜까지 호출
f.close()                        # 파일 닫기 (저장)

✔️ 추가 모드(a)로 파일 열기

  • 기존 파일에 새로운 내용을 추가할 때
f = open('./myFile.txt', 'a')    # 파일 오픈 : 본 폴더에 추가 모드로 생성
f.write(x)                       # 내용 작성 - 변수 x에 저장된 값 추가 작성
f.close()                        # 파일 닫기 (저장)

✔️ with as 로 파일 열기

  • with open("파일명", "열기 모드") as 파일 객체 :
  • 파일을 close 하지 않아도 된다.
  • readlines가 EOF까지만 읽으므로, while 문 안에서 EOF를 체크할 필요가 없다.
with open('./myFile.txt', 'r') as f :
	reading = f.readline()

동시에 여러 개 여는 것도 가능하다.

with open('./file1.txt', 'r') as f, open('./file2.txt', 'w') as f2 :
	reading = f.readline()
    writing = f2.write(reading)

📌 반복문 이용해 파일에 문자열 한 줄씩 쓰기

f = open('file.txt', 'w')  # (1) 파일을 쓰기 모드로 열기
for num in range(1, 4) :   # (2) for문 : num이 1~3까지 반복
	text = "num"           # 저장할 문자열 생성
    f.write(text)          # (3) 파일에 문자열 저장
f.close()                  # (4) 파일 닫기
1
2
3



📄 텍스트 파일의 데이터 읽고 처리하기

1) 데이터 파일 준비 및 읽기

  • 데이터 : 어느 커피 전문점에서 3일 동안 기록한 메뉴별 판매량
  • 작업 : 3일 동안 메뉴당 전체 판매량과 하루 평균 판매량 구하기

먼저 해당 파일이 있는지 확인한다.

!type c:\folder\coffee.txt

텍스트 파일을 연 후에 한 줄씩 읽고 출력한다.

file_name = 'c:\folder\coffee.txt'

f = open(file_name)     # 파일 열기
for line in f :         # 한 줄씩 읽어서 line 변수에 할당
	print(line, end="") # 한 줄씩 출력
f.close()               # 파일 닫기
날짜     에스프레스     아메리카노     카페라떼
10.15     10          50          45
10.16     12          45          32
10.17     11          53          38

2) 파일에서 읽은 문자열 데이터 처리

첫 번째 줄의 항목 이름을 가져와 빈칸을 기준으로 나누고, 두 번째 줄 이후의 항목 값을 처리한다.

# 첫 번째 줄의 항목 이름을 가져와 빈칸을 기준으로 나누기
f = open(file_name)          # 파일 열기
header = f.readline()        # 데이터의 첫 번째 줄을 읽음
hList = header.split()  # 첫 줄의 문자열 분리 후 리스트로 변환

# 두 번째 줄 이후의 항목 값 처리하기
e = []                       # 커피 종류별로 빈 리스트 생성
a = []
c = []

for line in f :              # 두 번째 줄부터 데이터를 읽어서 반복적으로 처리
	dataList = line.split()  # 문자열에서 공백을 제거해 리스트로 변환
    
    # 커피 종류별로 정수로 변환한 후, 리스트의 항목으로 추가
    e.append = (int(dataList[1])])
	a.append = (int(dataList[2])])
	c.append = (int(dataList[3])])
    
f.close()                    # 파일 닫기

3일간 메뉴별 전체 판매량과 하루 평균 판매량을 구한다.

total_sum = [sum(e), sum(a), sum(c)]
total_mean = [sum(e)/len(e), sum(a)/len(a), sum(c)/len(c)]

for k in range(len(total_sum)) :
print(f'{hList[k+1]} 전체 판매량 {total_sum[k]}, 하루 평균 {total_mean[k]}')
에스프레소 전체 판매량 33, 하루 평균 11.0
아메리카노 전체 판매량 148, 하루 평균 49.3
카페라떼 전체 판매량 115, 하루 평균 38.3






🔎 파일 경로

컴퓨터의 파일 시스템은 하나의 뿌리에서 시작해서 여러 개의 가지로 뻗어나가는, 나무 같은 구조를 가지고 있다.
파일 시스템의 뿌리는 항상 '루트(root)'라고 합니다. 결국 컴퓨터의 모든 파일은 루트 안에 있는 거죠. 그리고 프로그래밍에서는 폴더를 '디렉토리(directory)'라고도 합니다.

파일 경로는 컴퓨터에 있는 파일의 정확한 위치를 뜻합니다.

✔️ 파일의 경로를 표기하는 방법

▪ Windows :

  • 디렉토리 안을 \로 표기
    예를 들어 folder 디렉토리 안의 file2.py는 folder\file2.py로 표기
  • 루트 디렉토리 안은 하드 드라이브에 따라서 C:\ 혹은 D:\로 표기
    하드 드라이브마다 각자의 파일 시스템 존재

▪ macOS :

  • 디렉토리 안을 /로 표기합니다. 예를 들어 folder 디렉토리 안의 file2.py는 folder/file2.py로 표기합니다.
  • 루트 디렉토리 안은 /로 표기합니다.

✔️ 파일의 경로

▪ 절대 경로

  • 루트에서 시작하는 파일의 전체 경로

▪ 상대 경로

  • 현재 위치를 기준으로 다른 파일의 위치를 나타내는 것
  • . or .. 으로 시작
    - . - 현재 디렉토리
    - .. - 상위 디렉토리 (현재 디렉토리를 포함하고 있는 디렉토리)

profile
planning design development with data

0개의 댓글