pythonランダムリネーム奇数偶数
解決したいこと
macbookで画像ファイル名を名前順番の昇順に設定しているとして
奇数番目はランダム奇数にリネーム、
奇数番目の次のファイルは奇数番目でリネームされた数値+1
した結果でリネームしたい
例)
1.png
2.png
3.png
4.png
5.png
6.png
7.png
8.png
9.png
10.png
リネーム後 例)
103.png
104.png
267.png
268.png
479.png
480.png
555.png
556.png
713.png
714.png
発生している問題・エラー
windowsではリネーム結果が理想通りだが
macbookで実行するとファイルが消えたり、
リネーム結果が最初の奇数、偶数のペアを保持せずバラバラになったりする。
該当するソースコード
python
実行したコード
import os
import random
def rename_odd_files(directory):
# ディレクトリ内のファイル一覧を取得
files = os.listdir(directory)
# ファイルを名前でソート
files.sort()
# 奇数番目のファイルに対して処理を行う
for i in range(0, len(files), 2):
old_name = files[i]
old_path = os.path.join(directory, old_name)
# ファイルの拡張子を取得
_, extension = os.path.splitext(old_name)
# 新しいランダムな奇数の名前を生成
new_name = str(random.randint(1, 1000))
# 確認して奇数になるように調整
if int(new_name) % 2 == 0:
new_name = str(int(new_name) + 1)
new_path = os.path.join(directory, new_name + extension)
# ファイルをリネーム
os.rename(old_path, new_path)
# 同時に次のファイルも+1してリネーム
if i + 1 < len(files):
next_old_name = files[i + 1]
next_old_path = os.path.join(directory, next_old_name)
# 拡張子を取得
_, next_extension = os.path.splitext(next_old_name)
# 新しい名前を生成し、+1する
next_new_name = str(int(new_name) + 1)
next_new_path = os.path.join(directory, next_new_name +
next_extension)
# ファイルをリネーム
os.rename(next_old_path, next_new_path)
if __name__ == "__main__":
# ディレクトリのパスを指定
target_directory = "/Users/shi/Documents/1"
# ファイルをリネーム
rename_odd_files(target_directory)
自分で試したこと
windowsではリネーム結果が理想通りだが
macbookで実行するとファイルが消えたり、
リネーム結果が最初の奇数、偶数のペアを保持せずバラバラになったりする。
0 likes