如何在Python中判断文件是否为远程文件

2024-03-28 21:03:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我想确定文件是否位于本地硬盘驱动器上,还是位于OSX中从网络安装的驱动器上。因此,我希望生成类似以下内容的代码:

file_name = '/Somewhere/foo.bar'
if is_local_file(file_name):
    do_local_thing()
else:
    do_remote_thing()

{我在上面的例子中找不到任何东西。理想情况下,我希望使用一个现有的函数,如果有一个,但失败了,我如何实现它自己呢?我已经想出的最好的是下面的,但这对待已安装的dmg好像他们是远程的,这不是我想要的。我还怀疑我可能在重新发明轮子!在

^{pr2}$

我有两个生成校验和的函数,其中一个函数使用多进程,这会在开始时产生开销,但如果网络连接速度慢,则对于大文件,该函数更快。在


Tags: 文件函数代码name网络foolocalbar
2条回答

“我有两个生成校验和的函数,其中一个函数使用多进程,一开始会增加开销,但如果网络连接速度慢,则对于大文件,这种方法更快。”

那么,您真正想让is_local_file()告诉您的只是“文件访问速度会比我想要的慢吗?”的代理度量。作为一个代理衡量标准,对于您真正想要了解的内容(本地但虚拟化的磁盘,远程但速度惊人的NAS,等等)来说,这是一个相对较差的指标

由于您提出的问题几乎不可能通过编程来回答,所以最好提供一个选项,就像make上的-jobs选项一样,它明确表示“并行化此运行”。在

您可以使用您现有的代码(或尝试在How to find the mountpoint a file resides on?)找到文件的装入点;然后阅读/proc/mounts来查找设备和文件系统;/proc/mounts具有格式

device mountpoint filesystem options...

您可以使用filesystem字段自动排除已知的网络文件系统,例如afs、cifs、nfs、smbfs。否则,您可以看看这个设备;作为一个基本的启发,如果设备是一个设备节点(stat.S_ISBLK)或none,那么文件系统可能是本地的;如果它是URI样式(host:/path),那么它可能是远程的;如果它是一个实际的文件,那么文件系统就是一个磁盘映像,您需要递归。在

相关问题 更多 >