-
[python] os | 파일 및 디렉터리 관리 (+에러해결)__Python 2021. 6. 4. 01:34
파일 및 디렉터리 관리에 활용할 수 있는 os모듈 사용방법 몇 가지를 기록해두려 한다.
본인은 자주 쓰지는 않지만, 간혹 os 모듈이 필요할 때가 있다.
1) path를 설정하거나
2) 디렉터리 내 파일 목록을 알고 싶을 때
3) FileNotFoundError: [Errno 2] No such file or directory: 에러가 발생해서 현재 작업 디렉터리를 알고 싶을 때
간단한 코드이지만 안 쓰다보니 손에 익지 않아서, 유용하게 사용할만한 함수를 정리해보았다.- .getcwd()
- .chdir()
- .listdir()
- 번외 > glob 모듈 / os.makedirs / os.mkdir / os.rename()
시작합니다. 😊
모듈 불러오기¶
import os import pandas as pd
: 디렉터리 확인 @ 현재 작업 디렉터리를 문자열로 반환os.getcwd()
Out>
'C:\\IT\\python_workspace\\venv\\0. FT\\01. Python'
▼ ERROR ▼
TypeError: getcwd() takes no arguments (1 given)
[해결] getcwd 함수에는 파라미터를 넣지 않는다.
os.getcwd('C:\\')
: 파일 경로 지정 @ 현재 작업 디렉터리 위치를 지정한 path로 변경▼ ERROR ▼
TypeError: chdir() missing required argument 'path' (pos 1)
[해결] chdir 함수에는 파라미터로 path를 입력한다.
os.chdir()
▲ ▲ ▲
이번에는 정상적으로 path를 입력시켰다.
os.chdir('C:\sample')
작성중인 ipynb 노트북 파일이 있는 디렉터리에 다른 csv 파일을 불러와보았다.
▼ ERROR ▼
pd.read_csv('os_sample.txt')
FileNotFoundError: [Errno 2] No such file or directory: 'os_sample.txt'
[문제] 현재 작업 디렉터리에는 해당 파일이 없다고 에러가 발생했다.
** 해당 txt 파일은 path 변경 전의 디렉터리에 있으며, 현재 작업 디렉터리는 위에서 'C드라이브 하위 sample 폴더'로 변경했기 때문에 에러가 났다.
이러한 실수는 가끔 dataset을 다른 디렉터리에 저장한 후, csv 읽어올 때 발생한 적이 있다.
[해결]
- listdir를 사용해 현재 디렉터리에 해당 파일이 있는지 확인한다.
- getcwd를 사용해 현재 디렉터리를 확인한다.
▲ ▲ ▲
'memo.csv' 파일은 현재 디렉터리에 있어 정상적으로 불러와졌다.pd.read_csv('memo.csv')
Out[6]:이름 국어 수학 영어 0 KIM 30 70 65 1 MIN 15 88 43 2 HA 100 95 98 : 파일 목록 반환 @ path로 지정된 디렉터리에 있는 파일 이름들을 리스트로 반환파라미터 지정하지 않으면 현재 디렉토리의 파일들을 리스트로 반환한다.os.listdir()
Out>['memo.csv', 'memo1.txt', 'memo2.txt', 'memo3.txt']
파일 목록을 받아오고 싶은 path를 지정할 수도 있다.os.listdir('C:\IT\python_workspace\venv\0. FT\01. Python')
* 주의 *
위 코드블록과 같이 파일탐색기에서 경로 복사해 path로 주면 다음의 에러가 발생할 수 있다.
ValueError: listdir: embedded null character in path
[해결] '\' → '/'로 변경한다. 다양하게 수정해봤는데, '/' 이기만 하면 정상으로 인식되는 것 같다.
++)
위에서 특정 path를 지정해 일회성으로 해당 디렉터리를 읽었을 뿐, 여전히 '현재 작업 디렉토리'는 유지된다.
os.getcwd()
Out >'C:\\sample'
glob 모듈
import glob
glob.glob
: os.listdir()처럼 디렉터리 내 파일 이름을 리스트로 반환한다. 파라미터 입력에 따라 특정 파일을 읽어들인다.
'.txt' 형식의 파일 목록 가져오기glob.glob('*.txt')
Out>['memo1.txt', 'memo2.txt', 'memo3.txt']
디렉터리 내 모든 파일 목록 가져오기
glob.glob('*')
Out>['memo.csv', 'memo1.txt', 'memo2.txt', 'memo3.txt']
폴더 생성 : os.makedirs() / os.mkdir()
os.makedirs() 또는 os.mkdir()를 이용해서 폴더를 생성할 수 있다.os.makedirs('mkdir_sample1') os.mkdir('mkdir_sample2') # 예) 예측모델 저장 시 새폴더 생성 후 해당 폴더에 저장할 때
# 결과 확인 os.listdir() # 폴더 생성 전 : ['memo.csv', 'memo1.txt', 'memo2.txt', 'memo3.txt']
Out>['memo.csv', 'memo1.txt', 'memo2.txt', 'memo3.txt', 'mkdir_sample1', 'mkdir_sample2']
os.rename : 파일 이름 변경
os.rename('변경전','변경후') 파라미터로 2개 값을 입력한다.
os.rename('memo1.txt','newname.txt')
# 결과 확인 os.listdir()
Out>['memo.csv', 'memo2.txt', 'memo3.txt', 'mkdir_sample1', 'mkdir_sample2', 'newname.txt']
그 외 다양한 함수가 있다.
dir(os)를 입력해 위에서 사용하지 않은 함수를 추가로 확인할 수 있다.
기타 함수에 관심이 있으시거나 자세한 설명을 원하시면 하단의 공식 사이트를 참고해주세요:)
참고: 파이썬 공식 문서
https://docs.python.org/ko/3/library/os.html#os-file-dir
https://docs.python.org/ko/3/tutorial/stdlib.html728x90'__Python' 카테고리의 다른 글
[python] jupyter+colab | 파이썬에서 금융데이터 수집하기 (0) 2021.06.17 [python+] Oracle | Connecting to Oracle Database XE (0) 2021.06.16 [에러해결] datetime | hour 24:00:00 변환 오류 (1) 2021.06.02 [pandas] DataFrame | 데이터프레임 병합하기(concat, merge) (0) 2021.06.02 [에러해결] colab | matplotlib 한글 폰트 설정하기 (0) 2021.06.01