開発環境
- macOS Mojave - Apple (OS)
- Emacs (Text Editor)
- Windows 10 Pro (OS)
- Visual Studio Code (Text Editor)
- Python 3.7 (プログラミング言語)
退屈なことはPythonにやらせよう ―ノンプログラマーにもできる自動化処理プログラミング (Al Sweigart(著)、相川 愛三(翻訳)、オライリージャパン)の第Ⅱ部(処理の自動化)、9章(ファイルの管理)、9.7(演習プロジェクト)、9.7.3(連番の飛びを埋める)の解答を求めてみる。
コード
Python 3
#!/usr/bin/env python3 import os import re import sys try: directory = sys.argv[1] prefix = sys.argv[2] except Exception as err: print('usage: directory prefix') sys.exit(1) pattern = re.compile(r'^' + prefix + r'(\d+)(.*)$') filenames = [] suffixes = [] start = None start_len = None os.chdir(directory) nums = [] for filename in sorted(os.listdir('.')): if os.path.isfile(filename): m = re.match(pattern, filename) if m: if start is None: start = int(m.group(1)) start_len = len(m.group(1)) filenames.append(filename) suffixes.append(m.group(2)) for i, (filename, suffix) in enumerate(zip(filenames, suffixes), start): os.rename(filename, f'{prefix}{i:0>{start_len}d}{suffix}')
入出力結果(Bash、cmd.exe(コマンドプロンプト)、Terminal、Jupyter(IPython))
$ tree tmp tmp ├── spam001.txt └── spam003.txt 0 directories, 2 files $ ./sample3.py tmp spam $ tree tmp tmp ├── spam001.txt └── spam002.txt 0 directories, 2 files $
0 コメント:
コメントを投稿