1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

pythonで、ファイル名の一部を一瞬で修正する。(間違ったファイル名を修正する!)

Last updated at Posted at 2021-08-10

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
1
1
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?