Python

【Python】ファイル、ディレクトリ(フォルダ)操作備忘録

記事内に商品プロモーションを含む場合があります

こんにちは、hokkyokunです。
Pythonのファイル、ディレクトリ操作で実際に使用したり、調べたりしたものを
備忘録的にまとめました。

何かのご参考にしていただければ幸いです。

カレントディレクトリ

# osモジュールでとれる
import os
print(os.getcwd())
#>> C:\Users\hokky\OneDrive\ドキュメント\simulation_stocks

# pathlibでも取れる
import pathlib
print(pathlib.Path.cwd())
#>> C:\Users\hokky\OneDrive\ドキュメント\simulation_stocks

ディレクトリの移動1

# パス=C:\Users\hokky\OneDrive\ドキュメント\simulation_stocks

# 一つ上の階層に移動
os.chdir("../")
#>> C:\Users\hokky\OneDrive\ドキュメント

# もう一度実行するとさらに一つ上の階層に移動
os.chdir("../")
print(os.getcwd())
#>> C:\Users\hokky\OneDrive

# ディレクトリまで移動
os.chdir("./ドキュメント/simulation_stocks")
print(os.getcwd())
#>> C:\Users\hokky\OneDrive\ドキュメント\simulation_stocks

# 二回やるとさらに一つ上の階層に移動
os.chdir("../../")
print(os.getcwd())
#>> C:\Users\hokky\OneDrive

# ディレクトリまで移動する際、パスを間違える(飛ばすとエラー)
os.chdir("./simulation_stocks")
print(os.getcwd())
#>> FileNotFoundError

ディレクトリの移動2

# パス=C:\Users\hokky\OneDrive\ドキュメント\simulation_stocks

os.chdir("../../")
print(os.getcwd())
#>> C:\Users\hokky\OneDrive

# 絶対パスでもOK
file_path="C:/Users/hokky/OneDrive/ドキュメント/simulation_stocks"
os.chdir(file_path)
print(os.getcwd())
#>> C:\Users\hokky\OneDrive\ドキュメント\simulation_stocks

ディレクトリ内のファイル取得

import glob

#カレントディレクトリの下の階層に「temporarily_saved」というディレクトリがあります。
#その中のcsvファイルを全て取得
files=glob.glob("./temporarily_saved/*.csv")
print(files)

#>> ['./temporarily_saved\\VTI (1).csv', './temporarily_saved\\VTI.csv']

#カレントディレクトリを移動してからファイル取得すると、相対パスが見やすくなる
os.chdir("./temporarily_saved")
files=glob.glob("./*.csv")
print(files)

#>> ['.\\VTI (1).csv', '.\\VTI.csv']

ファイル操作

#file_path="C:\Users\hokky\OneDrive\ドキュメント\simulation_stocks\vti.csv"を相対パスで取得

print(file_path)
#>> .\VTI.csv

#ファイル名(拡張子あり)
file_name=os.path.basename(file_path)
print(file_name)
#>> VTI.csv

#ファイル名(拡張子でスプリット)
file_name_without_ext=os.path.splitext(file_name)
print(file_name_without_ext)
#>> ('VTI', '.csv')

#相対パスを絶対パスに変更
abs_path=os.path.abspath(file_path)
print(abs_path)
#>> C:\Users\hokky\OneDrive\ドキュメント\simulation_stocks\temporarily_saved\VTI.csv

#ファイルパスからディレクトリ名を取得(絶対パス)
abs_dir=os.path.dirname(abs_path)
print(abs_dir)
#>> C:\Users\hokky\OneDrive\ドキュメント\simulation_stocks\temporarily_saved

#ファイルパスからディレクトリ名を取得(相対パス)
file_dir=os.path.dirname(file_path)
print(file_dir)
#>> .

ファイルの更新日時取得

import datetime
import os
time_stamp=os.path.getmtime(file_name) # 1651999816.6657584 ⇒timestampなので変換が必要
update_time=datetime.datetime.fromtimestamp(time_stamp)
print(update_time)
#>> 2022-05-08 17:50:16.665758