IT/언어

[python] Python의 os 모듈 사용법 정리

개발자 두더지 2020. 5. 21. 00:58
728x90

 os모듈은 OS에 의존하는 다양한 기을 제공하는 모듈이다. 파일이나 디렉토리 조작이 가능하고, 파일의 목록이나 path를 얻을 수 있거나, 새로운 파일 혹은 디렉토리를 작성하는 것도 가능하다. 이 포스팅을 통해 os 모듈에서 사용할 수 있는 주요 메소드를 정리하고자 한다.


1. os.walk()

 os.walk()는 파일이나 디렉토리의 목록을 얻기 위한 모듈이다. 인수로 디렉토리명을 지정하는 것으로 파일이나 특정 확장자의 목록, 파일 경로를 취득할 수 있다.

 예를 들어, 파일의 목록을 얻고 싶은 경우 아래와 같이 작성할 수 있다.

[디렉토리의 구성]

test/
┣ dirA
┃ ┣ a-1.txt
┃ ┣ a-2.txt
┃ ┗ dirD/
┃ ┗ d-1.txt
┃
┣ dirB/
┃ ┣ b-1.py
┃ ┗ b-2.py
┃
┗ dirC/
  ┣ c-1.txt
  ┗ c-2.txt

[샘플 코드]

import os
 
for curDir, dirs, files in os.walk("test"):
    for f in files:
        print(os.path.join(curDir, f))

[실행 결과]

b-2.py
b-1.py
c-1.txt
c-2.txt
a-2.txt
a-1.txt
d-1.txt

os.walk() 자세한 사용법은 아래의 포스팅을 참고하길 바란다.

 

【python入門】os.walkを使ってディレクトリ走査をしてみよう!

今日はos.walk()の使い方について説明いたします。 os.walk()はファイルを走査する際に使用するモジュールで、ファイル一覧を表示する際などに活用できます。 今回の記事では、 ・os.wal

www.sejuku.net


2. os.listdir()

 os.listdir()은 파일이나 디렉토리의 목록을 확인하기 위해 사용한다. 예를들어, 파일의 목록을 얻고 싶은 경우 다음과 같이 이 코드를 작성할 수 있다.

[디렉토리 구성]

└── dir
    ├── sample1.txt
    ├── sample2.txt
    ├── sample3.txt
    ├── subdir1
    └── subdir2

[샘플 코드]

import os
 
path = './dir'
 
flist = os.listdir(path)
print(flist)

[실행 결과]

['subdir2', 'Untitled.ipynb', 'test2.csv', 'subdir1', 'test1.csv', '.ipynb_checkpoints', 'sample1.txt', 'sample2.txt', 'sample3.txt']

os.listdir()에 관련된 자세한 설명은 아래의 링크를 참조하길 바란다.

 

【python入門】os.listdirでファイル・ディレクトリの一覧を取得

よくファイルやディレクトリを操作するときに、以下のようなことが知りたい場合もあります。 指定したディレクトリの中身を一覧で取得したい 特定の拡張子のファイルを取得したい そこ�

www.sejuku.net


3. os.path()

 os.path()모듈은 '파일이나 디렉토리의 존재 확인', '지정한 경로의 파일명을 취득', '경로나 파일명의 결합' 등의 용도로 사용한다.

 아래의 표는 os.path()에서 자주 사용되는 메소드 목록이다.

exists() 파일 및 디렉토리의 존재를 확인할 수 있다. return값은 Bool형이 된다.
isdir() 디렉토리의 존재여부를 확인할 수 있다. return값은 Bool형.
isfile() 파일의 존재여부를 확인할 수 있다. return값은 Bool형.
basename() 지정된 경로의 파일명을 리턴한다.
dirname() 지정된 경로로부터 파일명을 제외한 것을 리턴한다.
split() 지정된 경로의 파일명과, 그 경로를 리턴한다.
splitext() 지정된 파일의 확장자와 확장를 제외한 파일명까지의 경로를 리턴한다.
join() 경로와 파일명 등을 결합하는 것이 가능하다.

 os.path()에 대한 자세한 내용은 아래의 링크를 참조하길 바란다.

 

【python入門】パス名操作はos.path()を活用しよう!

今日は、os.path()について解説します。os.path()はファイルやディレクトリが指定したパスに存在するかを確認したり、 パスからファイル名や拡張子を取得したりなどを行う際に利用されるモジ

www.sejuku.net


4. os.environ()

 os.environ()은 환경변수를 취득하거나, 읽어들이거나 쓰기 위해 사용한다. 환경변수란 시스템이 참고하고 있는 공통의 변수로, 환경에 관련된 데이터나 공통으로 사용하는 파일의 경로 등을 저장하기 위해 사용된다.

 예를 들어, Python에서 환경변수의 쓰기를 실행할 때는, 아래와 같이 작성할 수 있다.

[샘플 코드]

import os
 
os.environ["PHASE"] = "staging"
 
print("env(): " + os.environ["PHASE"])

[실행 결과]

env(): staging

 이 또한 자세한 설명은 아래의 블로그를 참고하길 바란다.

 

【Python入門】os.environ()を使って環境変数を活用しよう!

今日は、os.enviroin()について説明いたします! os.environ()はpythonのスクリプト内で扱う環境変数を設定したり確認したりする際に活用できます。 今回の記事では、 「環境変数

www.sejuku.net


5. os.mkdir()

 os.mkdir()을 사용하면, 간단히 디렉토리를 작성할 수 있다. 예를 들어, dir아래에 sub디렉토리를 작성하는 경우는 아래와 같이 코드를 쓸 수 있다.

[샘플 코드]

import os
 
path = './dir/sub'
 
os.mkdir(path)

os.mkdir()에 대해 자세한 설명은 아래의 포스팅을 참고하길 바란다.

 

【Python入門】ディレクトリを簡単に作成する|os.mkdir・os.makedirs

よくファイルやディレクトリを操作するときに、以下のようなことが知りたい場合もあります。 「ファイルを格納するためのディレクトリを作成したい」 「深い階層まで一気にディレクト��

www.sejuku.net


6. os.rename()

 os.rename()은 지정한 파일명을 변경할 때 사용한다. os.rename()은 변수전의 파일명과 변경후의 파일명을 지정한다. 아래의 샘플 코드에서 'sample_00.txt'를 'sample_01.txt'로 변경한 것이다.

[샘플 코드]

import os
 
# 変更前ファイル
path1 = './dir/sample_00.txt'
 
# 変更後ファイル
path2= './dir/sample_01.txt'
 
# ファイル名の変更
os.rename(path1, path2)
 
# ファイルの存在確認
print(os.path.exists(path2))

[실행 결과] 

True

 os.rename()에 관련된 자세한 내용은 아래의 포스팅을 참고하길 바란다.

 

【Python入門】os.renameでファイル名を変更する方法を解説!

ファイルやディレクトリを操作すると、以下のようなケースが発生することがあります。 ファイル名を変更するにはどうすればいいの? ディレクトリにあるファイルを一括で変更するには��

www.sejuku.net


7. os.remove()

 os.remove()는 파일을 삭제하기 위해 사용한다. 삭제하기 위해서는 os.remove()파라미터에 삭제하고 싶은 파일명을 경로를 이용해 지정한다. 아래의 샘플 코드에서는 './dir/sample.txt'의 파일을 삭제하고 있다.

[샘플 코드]

import os
 
path = './dir/sample.txt'
 
os.remove(path)
 
print(os.path.exists(path))

[실행 코드]

False

 os.remove()에 대한 자세한 설명은 아래의 포스팅을 참조하길 바란다.

 

【Python入門】ファイル・ディレクトリを削除|os.remove・os.rmdir

Pythonにはファイル・ディレクトリを操作するさまざまな関数が用意されています。 ファイルやディレクトリの処理をプログラミングしていると、以下のようなケースが発生することがありま

www.sejuku.net


참고자료

https://www.sejuku.net/blog/67787

728x90