微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何确定一个目录是否在同一分区上

假设我有一个input文件一个目标目录。 如何确定input文件是否与目标目录位于相同的硬盘驱动器(或分区)上?

我想要做的是复制一个文件,如果它是不同的,但移动它,如果它是相同的。 例如:

target_directory = "/Volumes/externalDrive/something/" input_foldername,input_filename = os.path.split(input_file) if same_partition(input_foldername,target_directory): copy(input_file,target_directory) else: move(input_file,target_directory)

感谢CesarB的回答,实现了same_partitionfunction:

import os def same_partition(f1,f2): return os.stat(f1).st_dev == os.stat(f2).st_dev

我如何find在所有子目录中具有相同名称的所有文件

一些支持格式为“ Device Xxx”的NT命名空间绝对path的API

如何确定文件碎片的程度?

确定目录等同性(Windows)

使用Python编程窗口中虚拟文件系统的最简单方法

模拟一个大的文件系统来testing在Windows中testing大内存映射(> 5tb)

为什么Walkingfiletree第二次更快?

cd / bash在符号链接上的行为

有没有办法看到一个符号链接的实际内容

为什么PHP include()不改变文件访问时间?

在C中,您可以使用stat()并比较st_dev字段。 在python中, os.stat应该这样做。

另一种方法是“更好地请求宽恕比权限”的方法 – 只是尝试重命名它,如果失败,赶上适当的OSError并尝试复制的方法。 即:

import errno try: os.rename(source,dest): except IOError,ex: if ex.errno == errno.EXDEV: # perform the copy instead.

这样做的好处是它也可以在Windows上运行,其中st_dev对于所有分区都是0。

请注意,如果你真的想复制,然后删除文件(即执行一个移动),而不是只复制,那么shutil.move将已经做你想要的:

帮助功能在模块shutil中移动:

移动(src,dst)

递归地将文件或目录移动到另一个位置。

如果目标位于我们当前的文件系统上,那么只需使用

改名。 否则,将src复制到dst,然后删除src。

[编辑]由于马修Schinckel的评论更新,提到shutil.move将删除复制后的来源,这不一定是想要的,因为问题只是提到复制。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐