フォルダ名とファイル名の操作 – 【Pythonプログラミング1 ~基礎編~】

PROGRAMMING
h

Pythonのフォルダ名とファイル名の操作や編集方法を、演習用プログラムのソースコードを使い、それを実行しながら解説します。

1.演習用プログラムのダウンロード

演習用プログラム( practice10.py )をダウンロードします。
ダウンロードファイルは テキストファイルになっているので、エクスプローラーを使って拡張子を .txt から .py に変更します。
practice10.py を Python をインストールしたフォルダ(今回は C:\Python)に置きます。


2.ソースコードの表示

メモ帳を使って、演習用プログラム( practice10.py )を開きます。

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文)>
タイトルとURLをコピーしました