我有一个python脚本正在读取共享驱动器上目录中的所有文件名和路径。然后,它将获取这些路径名和文件名,并构建一些HTML超链接,我可以将其添加到我们的网站中,因此不必一一手动进行操作。该脚本可以正常工作,但是由于某些原因,os.walkos.scandir()都会在某些路径和文件名上返回~$,从而替换了文件名中的第一个和第二个字符。

我无法找到有关此行为的任何文档,因此,如果有人对此有所了解,那将是很好的选择。

我正在使用的代码如下所示:

import os

f = os.scandir(path=r"\\server_path\share_folder")

print(f)
for fn in f:
    format_name = fn.name.split('.')[0].replace('_', ' ')
    print(r'        <p><a href="{}">{}</a></p>'.format(fn.path, format_name), "\n")

最佳答案

使用注释中提供的link @Barmar,我了解到开头带有~$的文件名实际上是一个临时文件,当其他人打开文件时该文件名存在。有了这些知识,我现在可以通过简单地排除带有该前缀的文件来解决此问题。

码:

import os

f = os.scandir(path=r"\\server_path\share_folder")

print(f)
for fn in f:
    if fn.name[:2] != "~$":
        format_name = fn.name.split('.')[0].replace('_', ' ')
        print(r'        <p><a href="{}">{}</a></p>'.format(fn.path, format_name), "\n")

关于python - os.walk和os.scandir返回〜$代替文件名的第一个和第二个字符,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53786069/

10-12 18:29