复制C盘A文件夹下的所有pdf文件到D分区B文件夹下面,B文件夹下如果于同名文件自动重新命名后保存并打印出重复的文件名单,Python代码
时间: 2023-09-18 09:06:15 浏览: 139
基于python实现复制文件并重命名
### 回答1:
在 Windows 系统中,可以使用 shutil 库来实现文件复制。下面是一个例子:
```python
import shutil
import os
src_folder = "C:\\A"
dst_folder = "D:\\B"
rename_list = []
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):
i = 1
while os.path.exists(dst_file):
dst_file = os.path.join(dst_folder, f'{i}_{filename}')
i += 1
rename_list.append(filename)
shutil.copy(src_file, dst_file)
if len(rename_list) > 0:
print("重复的文件名有:")
for name in rename_list:
print(name)
```
请注意,在 Windows 中,文件夹分隔符是 "\\"。
### 回答2:
以下是Python代码,用于实现将C盘A文件夹下的所有pdf文件复制到D分区B文件夹下,并且如果有同名文件则自动重新命名并保存重复的文件名单。
```python
import os
import shutil
def copy_files(source_folder, destination_folder):
pdf_files = []
duplicate_files = []
# 遍历源文件夹中的所有文件
for root, dirs, files in os.walk(source_folder):
for file in files:
if file.endswith(".pdf"):
src_path = os.path.join(root, file)
pdf_files.append(file)
# 判断目标文件夹中是否存在同名文件
if os.path.exists(os.path.join(destination_folder, file)):
duplicate_files.append(file)
# 重新命名文件
file_name, extension = os.path.splitext(file)
new_file_name = file_name + "_copy" + extension
dst_path = os.path.join(destination_folder, new_file_name)
else:
dst_path = os.path.join(destination_folder, file)
# 复制文件到目标文件夹
shutil.copy2(src_path, dst_path)
print("已复制文件:", src_path)
# 打印重复文件名单
if len(duplicate_files) > 0:
print("重复的文件名单:")
for file in duplicate_files:
print(file)
else:
print("没有重复的文件")
# 设置源文件夹和目标文件夹路径
source_folder = "C:\\A"
destination_folder = "D:\\B"
# 调用函数复制文件并打印重复文件名单
copy_files(source_folder, destination_folder)
```
需要注意的是,以上代码假设源文件夹`C:\A`和目标文件夹`D:\B`已经存在,并且目标文件夹内没有其他同名的pdf文件。如果目标文件夹中已经存在同名文件,将会自动在文件名末尾加上`_copy`来重新命名复制的文件。通过调用`shutil.copy2()`函数来实现文件的复制。
### 回答3:
可以使用Python的shutil模块来完成复制文件的操作。首先,需要导入shutil模块:
```python
import shutil
```
接下来,可以使用shutil模块的copy函数来复制文件,使用os模块的walk函数来递归遍历目录下的所有文件和文件夹。根据题目要求,需要复制C盘A文件夹下的所有pdf文件到D分区B文件夹下面。
```python
import shutil
import os
def copy_files(source_folder, destination_folder):
for root, dirs, files in os.walk(source_folder):
for file in files:
if file.endswith('.pdf'):
source_path = os.path.join(root, file)
destination_path = os.path.join(destination_folder, file)
if os.path.isfile(destination_path):
# 生成新的文件名
filename, extension = os.path.splitext(file)
new_filename = filename + '_copy' + extension
new_destination_path = os.path.join(destination_folder, new_filename)
shutil.copy2(source_path, new_destination_path)
# 打印重复的文件名
print('重复的文件名:', file)
else:
shutil.copy2(source_path, destination_path)
source_folder = 'C:\\A'
destination_folder = 'D:\\B'
copy_files(source_folder, destination_folder)
```
上述代码中,source_folder表示源文件夹的路径,destination_folder表示目标文件夹的路径。在复制过程中,如果目标文件夹中已经存在同名文件,则会自动生成新的文件名并保存到目标文件夹,并打印重复文件名单。
阅读全文