如何使用操作系统列表目录在网络路径上正确吗?

2024-06-30 07:47:57 发布

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

以下代码:

def tema_get_file():
    logdir='T:\\'
    logfiles = sorted([ f for f in os.listdir(logdir) if f.startswith('tms_int_calls-')])
    return logfiles[-1]

这运行得很好,但我试图让logdir以直接路径运行: \\servername\path\folder 驱动器T是映射驱动器。最初,这些文件在C盘上。在

一旦我这样做,我就会收到错误消息:

WindowsError: [Error 3] The system cannot find the path specified: '\servername\path\folder/.'

我试过:

"\\servername\\path\\folder""\\servername\\path\\folder\\"

以及

r"\\servername\path\folder"r"\\servername\path\folder\"

以及

"\\\\servername\\path\\folder""\\\\servername\\path\\folder\\"


Tags: path代码inforgetosdeffolder
2条回答

对我来说以下两项工作

os.listdir(r'\\server\folder')
os.listdir('\\\\server\\folder')

如果路径字符串不是由myUNCpath = "\\\\servername\\dir1\\dir2"之类的文本定义的,或者使用myUNCpath = "\\servername\dir1\dir2这样的原始字符串,即使字符串变量是这样定义的,由于listdir总是将字符串变量的反斜杠加倍,则os.listdir(myUNCpath)无法正确处理Windows UNC路径。在

但是,如果通过从ini文件或任何其他配置文件读取UNC路径字符串,该怎么办呢?在

无法将其编辑为文本,也不可能在前面使用此r字符使其成为原始字符串。在

作为一个解决方法,我发现,可以将整个UNC path字符串变量拆分为它的单个组件(以除去这些该死的反斜杠字符),并使用文本定义重新组合它,并通过此设置再次设置反斜杠字符。那么这根弦的作用就很好了——难以置信,但却是真的!在

这是我的职责,执行这项工作。如果文件中的路径定义为 \servername\dir1\dir2(不添加反斜杠作为转义符)

...
myworkswellUNCPath = recomposeUNCpathstring(myUNCpath)

...

def recomposeUNCpathstring(UNCstring):

    pathstring1 = UNCstring.replace("\\\\", "").strip()
    pathComponents = pathstring1.split("\\")
    pathstring = "\\\\" + pathComponents[0] 

    for i in range(1, len(pathComponents)-1):
        pathstring = pathstring + "\\" + pathComponents[i]

    return pathstring

干杯 斯特凡

相关问题 更多 >