開発環境
- 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 コメント:
コメントを投稿