0

我正在寻求帮助。我试图让自动文件分类器基本上想到一个电子文件柜。我在运行 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/")

让我知道我是否可以提供任何需要澄清的信息?

4

0 回答 0