剪切C盘A文件夹下的所有pdf文件到D分区B文件夹下面,B文件夹下如果于同名文件自动重新命名后保存并打印出重复的文件名单,Python代码
时间: 2023-08-31 14:33:32 浏览: 107
### 回答1:
以下是在 Python 中完成上述操作的示例代码:
```
import os
import shutil
src_folder = r'C:\A' # 源文件夹
dst_folder = r'D:\B' # 目标文件夹
duplicate_files = [] # 用于存储重复文件名的文件
for filename in os.listdir(src_folder):
if filename.endswith('.pdf'):
src_file = os.path.join(src_folder, filename)
dst_file = os.path.join(dst_folder, filename)
if os.path.exists(dst_file):
# 文件名已经存在,需要重新命名
new_filename = 'new_' + filename
dst_file = os.path.join(dst_folder, new_filename)
duplicate_files.append(filename)
shutil.copy2(src_file, dst_file)
if duplicate_files:
print("重复文件名:", duplicate_files)
else:
print("没有重复文件")
```
请注意,上面的代码假设您已经有了 C 盘 A 文件夹下的所有 pdf 文件,并且 D 分区 B 文件夹已经存在。
### 回答2:
下面是用Python代码实现剪切C盘A文件夹下的所有pdf文件到D分区B文件夹下,并打印出重复的文件名单的方法:
```python
import os
import shutil
def move_pdf_files(src_folder, dest_folder):
# 切换到源文件夹路径
os.chdir(src_folder)
# 获取源文件夹中所有的文件名
all_files = os.listdir()
# 存储剪切过的文件名
moved_files = []
for file in all_files:
if file.endswith(".pdf"):
# 生成目标文件夹中的新文件名
dest_file = file
dest_path = os.path.join(dest_folder, dest_file)
counter = 1
# 判断是否存在同名文件
while os.path.exists(dest_path):
# 如果存在同名文件,添加编号
dest_file = file[:-4] + "_" + str(counter) + ".pdf"
dest_path = os.path.join(dest_folder, dest_file)
counter += 1
# 剪切文件到目标文件夹
shutil.move(file, dest_path)
# 记录剪切过的文件名
moved_files.append(dest_file)
# 查找重复的文件名
duplicate_files = set([x for x in moved_files if moved_files.count(x) > 1])
# 打印重复的文件名单
print("重复的文件名单:")
for file in duplicate_files:
print(file)
# 调用函数移动pdf文件
move_pdf_files("C:\\A", "D:\\B")
```
以上代码会将C盘A文件夹下的所有pdf文件剪切到D盘B文件夹下,如果存在同名文件,则会自动重新命名并保存。最后,重复的文件名单会被打印出来。
### 回答3:
可以使用以下Python代码实现剪切C盘A文件夹下的所有pdf文件到D分区B文件夹,并在B文件夹中遇到同名文件时自动重新命名,并打印出重复的文件名单:
```python
import os
import shutil
def cut_pdf_files(source_folder, destination_folder):
duplicate_files = {} # 用于保存重复的文件名及其个数
for file_name in os.listdir(source_folder):
if file_name.endswith('.pdf'): # 只处理pdf文件
source_path = os.path.join(source_folder, file_name)
destination_path = os.path.join(destination_folder, file_name)
while os.path.exists(destination_path): # 如果目标路径上已存在同名文件
if file_name in duplicate_files:
duplicate_files[file_name] += 1
else:
duplicate_files[file_name] = 1
file_name = f'{os.path.splitext(file_name)[0]}_{duplicate_files[file_name]}.pdf'
destination_path = os.path.join(destination_folder, file_name)
shutil.move(source_path, destination_path) # 将文件移动到目标路径
if duplicate_files:
print("重复的文件名单:")
for file_name, count in duplicate_files.items():
print(f'{file_name}: {count}次')
# 调用剪切函数
source_folder = 'C:/A'
destination_folder = 'D:/B'
cut_pdf_files(source_folder, destination_folder)
```
以上代码通过遍历源文件夹中的pdf文件,检查目标文件夹中是否已存在同名文件。如果存在同名文件,则将文件名修改为原文件名加上计数,例如"file.pdf"变为"file_1.pdf",直到找到一个目标文件路径上不存在同名文件的位置。然后使用`shutil.move()`函数将文件从源路径剪切到目标路径。
在剪切过程中,如果遇到同名文件,则会在`duplicate_files`字典中记录下重复的文件名及其个数。最后打印出重复的文件名单。
阅读全文