Pythonを業務で生かして、ラクをしようと言うプロジェクトを実行中です。
1.現状/問題点
月初に経理チームから送付されているpdfファイルなのですが、下記の様に「変」です。
”( ”が、全角になってたりします。(半角と全角がごっちゃになっております。)
これを、Pythonで修正したい。(こんなの簡単だろうと思ったのですが、結構、ハマったので、共有しますね!)
C:\Users\user_xxx\Desktop\project>tree/F
フォルダー パスの一覧
ボリューム シリアル番号は 2E48-BBB4 です
C:.
│ rename_test.py
│ sample1.(1234).pdf
│ sample2(2345).pdf
│ sample3(4567).pdf
ファイル名が「壊れている」と、御存じの様に色々な作業(例えば、Pythonのpywinzipモジュールを使って、pdfファイルを圧縮するとか)に支障が出ます。
従って、ファイル名を一瞬で修正します。
2.コード
import os
fileExt=r".pdf"
x=[_ for _ in os.listdir() if _.endswith(fileExt)]
print(x)
x1=[s.replace('.(','(') for s in x]
print(x1)
x2=[s.replace('(','(') for s in x1]
print(x2)
x3=[s.replace(')',')') for s in x2]
print(x3)
for j in range(len(x3)):
os.rename(x[j],x3[j])
j=j+1
3.ポイント
Pythonの標準機能のreplaceを使います。
>x1=[s.replace('.(','(') for s in x]
例えば、上は、リスト化されたxの要素を一つずつ(s)、拾っていくのだが、その際に、「.(」を「(」に書き換えろ!と言うコマンドです。(全角を半角に置換。)
因みに、「)」を「)」変換するのも一緒に(一行で)出来れば良いのですが、一つずつしかできない様です。
従って、一旦、リスト「X1」で一部だけ直した上で、リスト「X2」で更に修正。
最後は、リスト「X3」で更に修正と言う感じです。
従って、修正ポイントが10か所ならば、上みたいなコードを10個書く必要があります。(一つずつ修正するので。)
4.rename_test.py実行後
下記の様に、ファイル名が綺麗に修正されております。
C:\Users\user_xxx\Desktop\project>Tree/F
フォルダー パスの一覧
ボリューム シリアル番号は 2E48-BBB4 です
C:.
│ rename_test.py
│ sample1(1234).pdf
│ sample2(2345).pdf
│ sample3(4567).pdf