python把文件复制过去时如果命名重复如何实现不覆盖
时间: 2023-09-29 18:07:21 浏览: 96
python写文件时覆盖原来的实例方法
如果要实现不覆盖已有文件的复制,可以在复制时对目标文件进行检查,如果目标文件已经存在,则在其文件名后面添加一个序号或时间戳等来避免重名。以下是一个示例代码实现:
```python
import os
import shutil
def copy_file(src_file, dst_dir):
file_name = os.path.basename(src_file)
dst_file = os.path.join(dst_dir, file_name)
# 判断目标文件是否已经存在
if os.path.exists(dst_file):
# 如果已经存在,则在文件名后面添加序号
i = 1
while True:
new_file_name = f"{os.path.splitext(file_name)[0]}_{i}{os.path.splitext(file_name)[1]}"
new_dst_file = os.path.join(dst_dir, new_file_name)
if not os.path.exists(new_dst_file):
dst_file = new_dst_file
break
i += 1
# 复制文件
shutil.copy(src_file, dst_file)
```
在上面的代码中,`copy_file` 函数接受源文件路径和目标目录路径作为参数,首先获取源文件的文件名,然后拼接出目标文件的路径。接着判断目标文件是否已经存在,如果已经存在,则在文件名后面添加一个序号,直到找到一个不存在的文件名为止。最后调用 `shutil.copy` 函数复制文件到目标路径。
阅读全文