助けを求めています。自動ファイルソーターを基本的に電子ファイリングキャビネットと考えようとしています。Python 2.7 を実行している Synology Diskstation でこれを実行しています。
=========
ソース = /volume1/documents/unfiled デスティネーション = /volume1/documents/statement/
ソース フォルダー内には、多くのファイルと種類があります。スクリプトで次のことを実行したいと思います。
ソースフォルダーを調べて、最初のファイルを見つけます-ファイル名を見てください(大文字と小文字は区別されません)
ファイル名の例;
- YYYY bofa.pdf ... 2014 bofa.pdf
- YYYY-MM bofa.pdf ... 2014-01 bofa.pdf
- YYYY-MM-DD boba letter.pdf ... 2014-01-12 bofa letter.pdf
- YYYY bofa 1099int.pdf ... 2014 bofa 1099int.pdf
- YYYY バンク・オブ・アメリカ.pdf ...2014 バンク・オブ・アメリカ.pdf
- YYYY バンク・オブ・アメリカ 1st.pdf ... 2014 バンク・オブ・アメリカ 1st.pdf
- YYYY バンク・オブ・アメリカ 2nd.pdf ... 2014 バンク・オブ・アメリカ 2nd.pdf
- YYYY-MM-DD 領収書 .... 2014-01-13 領収書_1
- YYYY-MM-DD 領収書 .... 2014-01-13 領収書_2
ファイル名に bofa または Bank of America が含まれている場合は、ファイルを bofa フォルダー > サブフォルダー YYYY に移動します。1st が含まれている場合は、サブフォルダー > 1st. また、ファイル名に 1099 または 1098 が含まれている場合は、ファイルを taxs フォルダー > サブフォルダー YYYY にコピーします。
ファイルが既に存在する場合は例外で、それをフォルダーに追加しますが、サフィックスを追加します。
======
私の現在のコードはファイルを移動するために機能しますが、例外を処理しません。
1)ファイル名にサフィックスを追加するコードを取得するにはどうすればよいですか(ただし、拡張子.pdfの前に)技術的に複数ある可能性があるため、次の整数を検索する必要がありますか?
2)スクリプトの大文字と小文字を区別しないようにする方法はありますか?
3) 移動/コピーのログを作成しますか?
#!/usr/bin/python
import os
import fnmatch
import shutil
source = 'C:/Users/user/Desktop/UNFILED/'
ii='1'
base = os.path.split(source)
for file in os.listdir(source):
#BOFA
if fnmatch.fnmatch(file,'*bofa*pdf'):
#Return True if path is an existing regular file.
if not os.path.isfile('C:/Users/user/Desktop/STATEMENTS/BOFA/'):
shutil.move(os.path.join(source, file),"C:/Users/user/Desktop/STATEMENTS/BOFA/")
True
new_name = file[:-4]+'_'+str(ii)+file[-4:]
os.rename(source, new_name)
shutil.move(os.path.join(new_name, file),"C:/Users/user/Desktop/STATEMENTS/BOFA/")
説明が必要かどうか教えてください。