【Python】指定フォルダ内のファイルの一括連番リネームする
概要
Pythonの勉強を始めたため備忘録として記事を作成
「指定フォルダ内のファイルの一括連番リネーム」するものを作成したため過程で学んだことなどを記載
成果物
いろいろ覚えたことの備忘録
実行ファイルのパスを取得
print(__file__) # 結果 h:\HOGE\HOGE\HOGEHOGE\test.py
実行ファイルのディレクトリのパスを取得
print(os.path.dirname(__file__)) # 結果 h:\HOGE\HOGE\HOGEHOGE
文字列のフォーマット
a = 10 b = 99 str1 = "number={} and {}".format(a, b) str2 = f"number={a} and {b}" # 結果 number=10 and 99
文字列にパターンとマッチする部分があるかを調べる
# ファイル名で使用できない文字が含まれていないか調べる fileName = "aa?aaa" if re.search(r'[\\|/|:|?|.|"|<|>|\|]', fileName): print("NG") # 結果 NG
フォルダ内のファイルから「ファイル」のみを取得(フォルダを除く処理)の内包表記
files = os.listdir(dirPath) # フォルダ内の全ファイル取得 files = [f for f in files if os.path.isfile(os.path.join(dirPath, f))] # フォルダ内の全ファイル取得
取得したファイルの「作成日」順でソート(昇順)
# ファイル名で使用できない文字が含まれていないか調べる files = os.listdir(dirPath) # フォルダ内の全ファイル取得 files = [f for f in files if os.path.isfile(os.path.join(dirPath, f))] # フォルダ内の全ファイル取得 # ソート(reverse=Trueで降順) files = sorted(files, key=lambda f: os.stat(os.path.join(dirPath, f)).st_ctime, reverse=False)
取得したファイルの「ファイル名」(文字列)順でソート(昇順)
files = os.listdir(dirPath) # フォルダ内の全ファイル取得 files = [f for f in files if os.path.isfile(os.path.join(dirPath, f))] # フォルダ内の全ファイル取得 # ソート(reverse=Trueで降順) files = sorted(files, key=lambda f: f, reverse=False)
for文でインデックスと要素を同時取得
files = os.listdir(dirPath) # フォルダ内の全ファイル取得 files = [f for f in files if os.path.isfile(os.path.join(dirPath, f))] # フォルダ内の全ファイル取得 # for文 for index, file in enumerate(files): print(f"{index} : {file}")
配列の最後の要素を取得
a = [1,2,3,4,5] print(a[-1]) # 結果 5
コマンドプロンプトから呼ばれた際の引数を取得する
# 呼び出し側 python test.py a 111 ZZZ # python側 args = sys.argv print(args[0]) print(args[1]) print(args[2]) print(args[3]) print(len(args)) # 結果 test.py a 111 ZZZ 4
YAMLファイルの読み込み、要素の取得
with open(INFO_YAML_FILE_PATH) as yamlFile: # YAMLファイルを開く yamlText = yaml.safe_load(yamlFile) # YAMLファイルのロード dirPath = yamlText[YAML_KEY_DIR_PATH] # Keyでアクセス
最後に
学習し始めはなんでも面白いもので止まらない。
Unityの学習を怠ってしまっている・・・。(ヤバイ)
まだ初学者ゆえ間違っていることやこうした方がいいと思うことがあったら優しくコメントください。<(_ _)>