用python 写一个代码,实现将linux里的一个文件夹里的所有文件copy到指定的文件夹,需要被copy的文件夹,里有可能有文件、也有文件就,文件夹套文件夹,有多层文件夹。有重复文件,就在目标路径下再创建一个文件夹,如果再次重复,就再创建一个,帮我写个代码实现下
时间: 2024-03-20 10:41:16 浏览: 44
好的,下面是一个使用 Python 的实现,可以将一个目录下的所有文件和子目录中的文件复制到指定的目标目录中,如果目标目录中已经存在同名的文件,则会在目标目录中创建一个新的文件夹,以避免冲突。代码如下:
```python
import os
import shutil
def copy_files(src_dir, dst_dir):
for item in os.listdir(src_dir):
# 构造源文件路径和目标文件路径
src_path = os.path.join(src_dir, item)
dst_path = os.path.join(dst_dir, item)
# 如果是文件,直接复制到目标目录
if os.path.isfile(src_path):
# 如果目标目录中已经存在同名文件,创建一个新的文件夹
if os.path.exists(dst_path):
new_dir = os.path.join(dst_dir, item + '_copy')
os.makedirs(new_dir)
dst_path = os.path.join(new_dir, item)
shutil.copy2(src_path, dst_path)
# 如果是目录,递归调用copy_files函数复制所有文件
elif os.path.isdir(src_path):
# 如果目标目录中已经存在同名文件夹,创建一个新的文件夹
if os.path.exists(dst_path):
new_dir = os.path.join(dst_dir, item + '_copy')
os.makedirs(new_dir)
dst_path = new_dir
os.makedirs(dst_path)
copy_files(src_path, dst_path)
# 示例:将src_dir目录下的所有文件和子目录中的文件复制到dst_dir目录中
src_dir = '/home/username/source'
dst_dir = '/home/username/target'
copy_files(src_dir, dst_dir)
```
以上代码使用了 shutil 库的 copy2 函数,可以复制文件的内容和元数据(如权限和时间戳),保留文件的属性和权限。同时,使用了递归函数 copy_files 来处理所有的子目录和文件。如果目标目录中已经存在同名的文件或文件夹,则会在目标目录中创建一个新的文件夹来避免冲突。
阅读全文