我需要获取给定目录树中的所有文件(名为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已经存在
因此,在移动文件然后移动它们的过程中,我需要知道如何使用重复的名称重命名文件,但是不知道如何进行。
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
然后