将所有文件从目录树移动到另一个目录。如果重复的名称,请重命名

问题描述 投票:0回答:1

我需要获取给定目录树中的所有文件(名为Temp的文件夹以及具有更多子目录和文件的子目录...),将它们加密并将所有内容移动到唯一目录(名为Temp2的文件夹中,没有子目录)。如果名称重复,我想将名称更改为text.txt-> text(1).txt,然后继续移动该重命名的文件。

这是我目前所拥有的:

bufferSize = 64 * 1024
password1 = 'password'

print('\n> Beginning recursive encryption...\n\n')
for archivo in glob.glob(sourcePath + '\\**\*', recursive=True):
   fullPath = os.path.join(sourcePath, archivo)
   fullNewf = os.path.join(destinationPath, archivo + '.aes')

   if os.path.isfile(fullPath):
      print('>>> Original: \t' + fullPath + '')
      print('>>> Encrypted: \t' + fullNewf + '\n')
      pyAesCrypt.encryptFile(fullPath, fullNewf, password1, bufferSize)
      shutil.move(fullPath + '.aes', destinationPath)

它加密得很好,然后继续移动加密的文件。问题在于,当它找到并尝试使用现有名称移动文件时,会给我一个错误:

shutil.Error:目标路径'E:\ AAA \ Folder \ Folder \ Temp2 \ Text.txt.aes已经存在

因此,在移动文件然后移动它们的过程中,我需要知道如何使用重复的名称重命名文件,但是不知道如何进行。

python file rename move shutil
1个回答
1
投票
def make_unique_filename(file_path):
    duplicate_nr = 0
    base, extension = os.path.splitext(file_path)
    while os.path.exists(file_path):
        duplicate_nr += 1
        file_path = f'{base}({duplicate_nr}){extension}'

    return file_path

然后

© www.soinside.com 2019 - 2024. All rights reserved.