我基本上想做的是cp -Rl dir1 dir2
。但据我了解,python 仅提供shutils.copytree(src,dst)
实际复制文件的内容,但不可能硬链接文件。
我知道我可以cp
使用模块调用命令subprocess
,但我宁愿找到一种更清洁的(pythonic)方法来做到这一点。
那么有没有一种简单的方法可以做到这一点,还是我必须自己通过目录递归来实现它?
我基本上想做的是cp -Rl dir1 dir2
。但据我了解,python 仅提供shutils.copytree(src,dst)
实际复制文件的内容,但不可能硬链接文件。
我知道我可以cp
使用模块调用命令subprocess
,但我宁愿找到一种更清洁的(pythonic)方法来做到这一点。
那么有没有一种简单的方法可以做到这一点,还是我必须自己通过目录递归来实现它?
你只需要调用os.system("cp -Rl dir1 dir2")
,不需要手写你自己的函数。
已编辑:因为您想在 python 中执行此操作。
你是对的:它在模块中可用shutil
:
shutil.copytree(src, dst, copy_function=os.link)
这是一个纯 python 硬拷贝函数。应该与cp -Rl src dst
import os
from os.path import join, abspath
def hardcopy(src, dst):
working_dir = os.getcwd()
dest = abspath(dst)
os.mkdir(dst)
os.chdir(src)
for root, dirs, files in os.walk('.'):
curdest = join(dst, root)
for d in dirs:
os.mkdir(join(curdst, d))
for f in files:
fromfile = join(root, f)
to = join(curdst, f)
os.link(fromfile, to)
os.chdir(working_dir)