首页 > 解决方案 > 如何以“file://///SERVER//folder1/folder2/”的形式获取路径

问题描述

我对python相当陌生,我有以下问题(只是一个例子):

 import os
 mypath = 'I:\Folder1'
 for dirpath,_,filenames in os.walk(mypath):
        for f in filenames:
            getpath = os.path.abspath(os.path.join(dirpath, f))

以以下形式返回路径:

我:\文件夹1\文件夹2

这对我来说通常没问题

但是“I:\”是我们工作中的服务器之一,为了进一步处理(html 内容),我需要这种形式的确切地址

file://///服务器名/子文件夹/文件夹1/文件夹2

编辑:换句话说:

我的程序可以在本地使用,也可以在不同的服务器上使用——这取决于用户。相当愚蠢地说我需要一个函数来返回win10中的内容,如下所示:“右键单击文件夹->路径复制->文件:////....”。而且我只知道我电脑上的这条路径叫做“I:\Folder1”..但是“I:\Folder1”是服务器名

编辑2:解决(见评论)

标签: pythonserverpath

解决方案


如果您在 Windows 平台上并且需要正斜杠,实际上可以导入操作系统特定版本。例如,您可以使用posixpath.

要解决您的问题,您需要首先mypath从每个 return中剥离dirpath。接下来使用 split 与操作系统的分隔符将其拆分为文件夹组件,即\. 然后可以使用该命令将其全部重新加入server前缀。posixpath.join()例如:

import posixpath
import os

mypath = r'I:\Folder1'
server = 'file://///Servername/Subfolder'

for dirpath,_,filenames in os.walk(mypath):
    for f in filenames:
        subfolder = dirpath[len(mypath):]
        server_path = posixpath.join(server, *subfolder.split(os.sep), f)
        print(server_path)

推荐阅读