我正在使用Python 2.7.3。我正在编写一个Python脚本,将目录树的部分内容从一个位置复制到另一个位置。需要复制的一些文件是符号链接。
我该如何使用Python复制符号链接而不跟随它们?(我只想盲目地将它们复制,就像它们是“常规”文件一样)
我发现Python 3.3的shutil.copy()
支持参数follow_symlinks=False
,但旧版本的shutil不支持。
编辑:更多细节:
此脚本的目的是获取指定位置的所有文件并将其拆分为单独的归档文件。我知道可以通过压缩整个目录并拆分存档来实现这一点,但我需要能够在不重新组合成一个大型存档的情况下单独提取每个归档文件。此外,每个归档文件的大小必须小于指定的大小。
基本方法:
- 获取源目录中所有文件的绝对路径
- 获取所有文件的大小
- 按大小排序所有文件(无论位置如何)
- 将文件从位置X复制到tmp位置(直到已复制文件的总和<=最大归档文件大小)
- 创建tmp的归档文件
- 清理tmp位置
- 循环执行步骤4,直到没有要复制的文件
感谢您的反馈。
shutil.copytree()
对我目前的解决方案不适用。 - rkysercopytree()
实现展示了当simlinks
为真时copytree()
如何处理符号链接。为什么不以此作为参考呢?你可以简单地包装shutil.copy()
或shutil.copy2()
,添加shutil.copytree()
中的几行额外代码来使用它们。 - JABlinkto = os.readlink(srcname)
后跟os.symlink(linkto, dstname)
。这基本上就是我作为“解决办法”的所做的!我想这意味着这才是正确的方法。 - rkysercopytree()
中(大部分)相关的代码行。 - JAB