我正在寻求帮助。我试图让自动文件分类器基本上想到一个电子文件柜。我在运行 Python 2.7 的 Synology Diskstation 上运行它。
=========
来源 = /volume1/documents/unfiled 目的地 = /volume1/documents/statements/
在源文件夹里面会有很多文件和类型。我希望脚本执行以下操作:
浏览源文件夹,找到第一个文件 - 查看文件名(不区分大小写)
示例文件名;
- 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 Receipt_1
- YYYY-MM-DD 收据 .... 2014-01-13 Receipt_2
如果文件名包含 bofa 或 Bank of America,则将文件移动到 bofa 文件夹 > 子文件夹 YYYY。如果它包含 1st,则在子文件夹 > 1st 中。此外,如果文件名中包含 1099 或 1098,则将文件复制到 tax 文件夹 > 子文件夹 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/")
让我知道我是否可以提供任何需要澄清的信息?