Pythonのフォルダ名とファイル名の操作や編集方法を、演習用プログラムのソースコードを使い、それを実行しながら解説します。
1.演習用プログラムのダウンロード
演習用プログラム( practice10.py )をダウンロードします。
ダウンロードファイルは テキストファイルになっているので、エクスプローラーを使って拡張子を .txt から .py に変更します。
practice10.py を Python をインストールしたフォルダ(今回は C:\Python)に置きます。
2.ソースコードの表示
メモ帳を使って、演習用プログラム( practice10.py )を開きます。

practice10.py
3.フォルダ名とファイル名の操作
① フォルダやファイルの存在を確認する
コマンドプロンプト で practice10.py を実行します。
プログラムを実行する方法は、こちらの記事『ファイルに保存されたプログラムの実行』を参照します。
以下のように表示されます。
C:\Users\kotablog>python "C:\Python\practice10.py" *** フォルダの存在を確認する *** フォルダ C:\Python は存在します *** ファイルの存在を確認する *** ファイル C:\Python\practice10.py は存在します
フォルダやファイルが存在しているかを確認する方法
・フォルダ:関数 os.path.isdir()
・ファイル:関数 os.path.isfile()
プログラムソースを確認します。
01 # -*- coding: utf-8 -*-
02 """
03 演習プログラム10
04
05 フォルダ名とファイル名の操作
06
07 """
08 import sys # モジュールのインポート
09 import os
10 import datetime
11
12 # フォルダとファイルのフルパス名を用意する
13 dir_path = r"C:\Python" # フォルダのフルパス名
14 file_path = r"C:\Python\practice10.py" # ファイルのフルパス名
15
16 # フォルダの存在を確認する
17 print("\n*** フォルダの存在を確認する ***")
18 if os.path.isdir(dir_path):
19 print("フォルダ " + dir_path + " は存在します")
20 else:
21 print("フォルダ " + dir_path + " は存在しません")
22
23 # ファイルの存在を確認する
24 print("\n*** ファイルの存在を確認する ***")
25 if os.path.isfile(file_path):
26 print("ファイル " + file_path + " は存在します")
27 else:
28 print("ファイル " + file_path + " は存在しません")
29
30 #終了1
31 sys.exit()
13行目で、フォルダのフルパス名を変数 dir_path にセットしています。
14行目で、ファイルのフルパス名を変数 file_path にセットしています。
Windowsのパスを文字列で表したいときは、通常 "C:\\Python\\practice10.py" とする必要がありますが、先頭に r もしくは R をつけることで、r"C:\Python\practice10.py" と書くことができます。
18行目で、if文 と 関数 os.path.isdir() を使って、フォルダの存在を確認しています。
25行目で、if文 と 関数 os.path.isfile() を使って、フォルダの存在を確認しています。
② ファイルのパスを作成する
ソースコード #終了1 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
Ctrl キーを押しながら、 S キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3 キーを押して、 Enter キーを押下します。
以下のように表示されます。
*** ファイルのパスを作成する *** C:\Python\excel\sample.xlsx
関数 os.path.join() を使うと、容易にファイルのフルパス名を作成することができます。
C:\Python の中に、excel フォルダ、そしてファイル sample.xlsx のフルパス名を作成する方法は以下の通りです。
33 # ファイルのパスを作成する
34 print("\n*** ファイルのパスを作成する ***")
35 dir_name = "excel"
36 file_name = "sample.xlsx"
37 strFile = os.path.join(dir_path, dir_name, file_name)
38 print(strFile)
39
40 #終了2
41 sys.exit()
37行目で、C:\Python、excel フォルダ、ファイル sample.xlsx を使って、フルパス名を作成しています。
③ フォルダ名、ファイル名を取得する
ソースコード #終了2 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
Ctrl キーを押しながら、 S キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3 キーを押して、 Enter キーを押下します。
以下のように表示されます。
*** フォルダ名を取得する *** C:\Python *** フォルダ名とファイル名を一度に取得する *** ('C:\\Python', 'practice10.py') *** 拡張子ありのファイル名を取得する *** practice10.py *** 拡張子なしのファイル名を取得する *** practice10 *** ファイルの拡張子を取得する *** C:\Python\practice10 .py
43 print("\n*** フォルダ名を取得する ***")
44 dirName = os.path.dirname(file_path)
45 print(dirName)
46
47 print("\n*** フォルダ名とファイル名を一度に取得する ***")
48 result = os.path.split(file_path)
49 print(result)
50
51 print("\n*** 拡張子ありのファイル名を取得する ***")
52 fileName = os.path.basename(file_path)
53 print(fileName)
54
55 print("\n*** 拡張子なしのファイル名を取得する ***")
56 result = os.path.splitext(fileName)[0]
57 print(result)
58
59 print("\n*** ファイルの拡張子を取得する ***")
60 root, ext = os.path.splitext(file_path)
61 print(root)
62 print(ext)
63
64 #終了3
65 sys.exit()
44行目、ファイルのフルパス名から、フォルダ名を取得するには、関数 os.path.dirname() を使います。
48行目、フォルダ名とファイル名を一度に取得するには、関数 os.path.split() を使います。
結果はリストで返ってきますので、インデックス0がフォルダ名、インデックス1がファイル名です。
52行目、ファイル名(拡張子あり)を取得するには、関数 os.path.basename() を使うこともできます。
56行目、関数 os.path.splitext() を使うと、拡張子なしのファイル名と拡張子を取得することができます。
結果はタプルで返ってきますので、インデックス0が拡張子なしのファイル名、インデックス1が拡張子です。
60行目、関数 os.path.splitext() はタプルで返りますので、受け取る変数2つを『 , 』(カンマ)で繋げて書くことができます。
【注意】タプルの要素数は2ですので、受け取る変数の数も2でないと、ValueError が発生します。
演習問題
ソースコード #終了3 の1行下の sys.exit() の先頭に「 # 」を入れてコメントにします。
Ctrl キーを押しながら、 S キーを押して、ソースコードを上書き保存します。
コマンドプロンプトで F3 キーを押して、 Enter キーを押下します。
以下のように表示されます。
【演習問題1】ファイル名の後ろに現在日付(_YYYYMMDD)を追加してください フルパスファイル名:C:\Python\practice10.py 現在日付 :20240908 結果 :C:\Python\practice10
【演習問題1】ファイル名の後ろに現在日付(_YYYYMMDD)を追加してください
以下の結果となるように、72行目にコーディングを追加してください
結果:C:\Python\practice10_20240908.py
67 print("\n【演習問題1】ファイル名の後ろに現在日付(_YYYYMMDD)を追加してください")
68 print("\nフルパスファイル名:" + file_path)
69 strNow = datetime.datetime.now().strftime("%Y%m%d") # 現在日付の取得
70 print("現在日付".ljust(14) + ":" + strNow)
71 root, ext = os.path.splitext(file_path) # フルパスファイル名と拡張子を取得
72 result = root # ここにコーディングをしてください
73 print("結果".ljust(16) + ":" + result)
74
75 sys.exit()
<日時の操作 | フォルダ名とファイル名の操作 | 繰り返し文(for文、while文)> |