【Python】ディレクトリ・フォルダの操作

Pythonでディレクトリ・フォルダを操作方法について入門者向けにまとめました。

【パスの取得】カレントディレクトリ

■カレントディレクトリのパス取得

# -*- coding:utf-8 -*-
import os

cd_path = os.getcwd()

print(cd_path) # C:\prog\python

■パスの有無

import os

# ファイルパス
path = "D:/img/gochiusa"

# ファイルパスが存在するかどうかの判定
if os.path.exists(path):
    print("ファイルパスが存在します")
else:
    print("ファイルパスが存在しません")

■パスがファイルか判定

# -*- coding: utf-8 -*-
import os

# パス
path = "D:/img/gochiusa"

# ファイルパスが存在するかどうかの判定
if os.path.isfile(path):
    print("パスはファイルです。")
else:
    print("パスはファイルでないです。")

■パスがディレクトリか判定

# -*- coding: utf-8 -*-
import os

# パス
path = "D:/img/gochiusa"

# パスがディレクトリか判定
if os.path.isdir(path):
    print("パスはディレクトリです。")
else:
    print("パスはディレクトリでないです。")

■指定した拡張子のファイル名を取得(相対パスあり)

# -*- coding: utf-8 -*-
import glob

path = 'sample/*.py'

# sampleフォルダ内にあって拡張子がpyのファイル名を取得
file_list = glob.glob(path, recursive=True)

print(file_list) # ['sample\\file1.py']

■指定した拡張子のファイル名を取得(相対パスなし)

# -*- coding: utf-8 -*-
import glob, os

path = 'sample/*.py'

# sampleフォルダ内にあって拡張子がpyのファイル名を取得
file_list = glob.glob(path, recursive=True)

# ファイル名だけを抽出
file_list = [os.path.basename(r) for r in file_list]

print(file_list) # ['file1.py']

■パス内の全てのファイル・フォルダ名を取得(相対パスあり)

# -*- coding: utf-8 -*-
import glob

path = 'sample/*'

# パス内の全てのファイル・フォルダ名を取得
file_list = glob.glob(path)

print(file_list) # ['sample\\dir1', 'sample\\dir2', 'sample\\file1.py', 'sample\\file2.jpg', 'sample\\file3.xlsx']

■パス内の全てのファイル・フォルダ名を取得(相対パスなし)

# -*- coding: utf-8 -*-
import glob, os

path = 'sample/*'

# パス内の全てのファイル・フォルダ名を取得
file_list = glob.glob(path)

# ファイル名だけを抽出
file_list = [os.path.basename(r) for r in file_list]

print(file_list) # ['dir1', 'dir2', 'file1.py', 'file2.jpg', 'file3.xlsx']
関連ページ
1 【Python】カレントディレクトリ(現在のフォルダ)のパスを取得
2 【Python】ファイル・フォルダ(ディレクトリ)が存在するか判定
3 【Python】パスがディレクトリ(フォルダ)か判定
4 【Python】パスがファイルか判定
5 【Python】指定した拡張子のファイルを一覧で取得
6 【Python】ファイル名・フォルダ名を一覧で取得
7 【chardet】ファイルの文字コードを確認

【ファイル情報】拡張子

■ファイルの拡張子取得

# -*- coding: utf-8 -*-
import os.path

# ファイル名
filename = "heroinex.jpg"

# ファイル名と拡張子
fn, ext = os.path.splitext(filename)

# 結果表示
print("ファイル名:", fn) # ファイル名:heroinex
print("拡張子:", ext) # 拡張子:jpg

■ファイル・フォルダ名を一覧取得

# -*- coding: utf-8 -*-
import glob

path = 'sample/*'

# パス内の全てのファイル・フォルダ名を取得
file_list = glob.glob(path)

print(file_list) # ['sample\\dir1', 'sample\\dir2', 'sample\\file1.py', 'sample\\file2.jpg', 'sample\\file3.xlsx']
# -*- coding: utf-8 -*-
import glob, os

path = 'sample/*'

# パス内の全てのファイル・フォルダ名を取得
file_list = glob.glob(path)

# ファイル名だけを抽出
file_list = [os.path.basename(r) for r in file_list]

print(file_list) # ['dir1', 'dir2', 'file1.py', 'file2.jpg', 'file3.xlsx']

■ファイルの文字コード判別

pip install chardet
# -*- coding: utf-8 -*-
import chardet

with open("test.txt", "rb") as f:
  char_code = chardet.detect(f.read())

print(char_code) #{'encoding': 'utf-8', 'confidence': '', 'language': ''}

■ディレクトリの一括削除

# -*- coding:utf-8 -*-
import shutil

shutil.rmtree('dir1')
関連ページ
1 【Python】ファイル名から拡張子の取得
2 【chardet】ファイルの文字コードを確認
3 【Python】ファイル・フォルダの一斉削除
関連記事
1 【Python入門】サンプル集
関連記事