複数の空ファイルの作成とそのファイル名の一部を一括変更する(python,wondows10)

利用する場合は、テスト用のディレクトリを作成しその中で作業して下さい。
ファイルの消去には注意してください。

■空のファイルを作成する
空のファイルを作成するには、Pythonでファイルを開いてすぐ閉じることで可能です。
以下のコードでは、指定されたファイル名のリストを使って空ファイルを作成。

[pythonコード例1]
空ファイルを作成する。拡張子が同じファイルの例
 F:\英語の学習-実習1>python empty_files.py
---
import os

# 作成したい空ファイルの名前リスト
file_names = [
    'sample_track-001.mp3',
    'sample_track-002.mp3',
    'sample_track-003.mp3',
    'sample-001.mp3'
]

# ファイルを保存するディレクトリ
directory = 'eigo'  # 必要に応じてディレクトリ名を変更してください

# ディレクトリが存在しない場合は作成
os.makedirs(directory, exist_ok=True)

# 空ファイルを作成
for file_name in file_names:
    file_path = os.path.join(directory, file_name)
    with open(file_path, 'w') as f:
        pass  # 'w' モードで開いてすぐ閉じることで空ファイルが作成される

print("空ファイルの作成が完了しました。")


●コードの説明
os.makedirs(directory, exist_ok=True) は、eigo ディレクトリが存在しない場合に作成します(既に存在する場合は何もしない)。
with open(file_path, 'w') as f: pass で空ファイルを作成します。ファイルが既に存在する場合、上書きされて空になる。

●実行結果
上記のコードを実行すると、指定した eigo ディレクトリに以下の空ファイルが作成される。

eigo/
├── sample_track-001.mp3
├── sample_track-002.mp3
├── sample_track-003.mp3
└── sample-001.mp3
これで、.mp3、.txt などの空ファイルが作成されます。

[pythonコード例2]
空ファイルを作成する。拡張子が同じファイルの例
 F:\英語の学習-実習1>python n-empty_files.py
---
import os
import time

# 作成したい空の .mp3 ファイルの名前リスト
file_names = [
    'sample_track-001.mp3',
    'sample_track-002.mp3',
    'sample_track-003.mp3',
    'sample-001.mp3'
]

# ファイルを保存するディレクトリ
directory = 'eigo'

# 既存のファイルをすべて削除してから再作成する
if os.path.exists(directory):
    for f in os.listdir(directory):
        os.remove(os.path.join(directory, f))
else:
    os.makedirs(directory)

# 指定順にファイルを作成し、間隔を開けて保存順を明確にする
for file_name in file_names:
    file_path = os.path.join(directory, file_name)
    with open(file_path, 'w') as f:
        pass  # 'w' モードで開いてすぐ閉じることで空ファイルが作成される
    time.sleep(0.1)  # 作成時間に間隔を設けて順序が保持されるようにする

print("空ファイルの作成が完了しました。")

# ディレクトリ内のファイルを指定順で表示
print("\nディレクトリ内のファイル一覧:")
for file_name in file_names:
    print(file_name)


■ファイル名の一部を一括変更する
 F:\英語の学習-実習1>pyton rename-files-name.py
----
import os
import shutil

# 元ディレクトリと新規保存ディレクトリのパス
source_dir = 'eigo'
target_dir = os.path.join(source_dir, 'rename_eigo')

# 変更する条件
target_extension = '.mp3'  # 変更するファイルの拡張子
old_text = 'sample_track'  # 置換前の文字列
new_text = 'eiken3'        # 置換後の文字列

# 保存ディレクトリを作成(存在しない場合のみ作成)
os.makedirs(target_dir, exist_ok=True)

# 元ディレクトリのファイルを順に処理
for filename in os.listdir(source_dir):
    source_file = os.path.join(source_dir, filename)
    
    # ファイルがディレクトリでないことを確認
    if os.path.isfile(source_file):
        # ファイル名と拡張子を分割
        name, ext = os.path.splitext(filename)
        
        # 拡張子が指定されたものであれば、名前の一部を置換
        if ext == target_extension and old_text in name:
            new_name = name.replace(old_text, new_text) + ext
        else:
            # 他のファイルは名前をそのまま保持
            new_name = filename
        
        # 変更後のファイルを新しいディレクトリにコピー
        target_file = os.path.join(target_dir, new_name)
        shutil.copy2(source_file, target_file)

print("ファイルの変更が完了しました。")