首页 > 解决方案 > 从网络路径移动特定文件(有例外)

问题描述

我正在尝试创建一个脚本,以便从我拥有的列表中移动文件。我想为此创造一些条件,但恐怕这就是我的 Python 知识让我失望的地方。我有一个名字列表(AAA, BBB, CCC)。

对于其中的每一个,有六个不同的文件需要移动六个不同的扩展名(AAA.1, AAA.2, AAA.3, AAA.4, AAA.5, AAA.6)。这些文件可能位于 3 个不同的文件夹中。让我们假设,要么AAA/AAABBB/IOL要么BBB/ABC。我希望将所有这些文件移动到REAL/AAA. 问题是,在文件夹AAA/AAA中有一些AAAXXX.1我不想移动的文件。

我完全迷失了,对 Python 很陌生(基本上,这是我的第一周:p)。

import os
import shutil
import fnmatch

source = os.listdir(r"\\enterprise\AAA\AAA")
destination = os.listdir(r"\\enterprise\REAL\AAA")
set = {
"AAA",
"BBB",
"CCC"
       }

for file in source:
    for x in set:
        if file.__contains__(str(x)):
            print(file)
  1. 我不知道如何指定AAAXXX,BBBXXX和 etc 不得移动。
  2. 我不知道如何插入多个文件夹以搜索有条件的文件(如果不在文件夹中AAA/AAA,请尝试BBB/IOL,如果不在BBB/ABC

标签: python

解决方案


我不知道我怎么能指定不移动AAAXXX、BBBXXX 等。

最简单的方法是这样的:

if 'XXX' in file:
   continue # this means skip the rest of the cycle and move to next file

我不知道如何插入多个文件夹以搜索有条件的文件(如果不在文件夹 AAA/AAA 中,请尝试 BBB/IOL,如果不是 BBB/ABC)

最直接的方法是

if file_name in os.listdir('first_folder'):
    # move from first
elif file_name in os.listdir('second_folder'):
    # move from second
# continue adding elif for every folder
else:
    print(f'file {file_name) is not found')

但我可能只是扫描了每个文件夹,然后将所有匹配给定名称的内容移动到目的地。尽管如果您有重复的名称和不同的文件内容,并且您有一些文件夹特定的文件夹优先级,这可能不是您想要的。


推荐阅读