代码之家  ›  专栏  ›  技术社区  ›  Mike - SMT

os.walk和os.scandir返回~$以代替文件名的第一个和第二个字符

  •  1
  • Mike - SMT  · 技术社区  · 6 年前

    我有一个python脚本,它读取共享驱动器上目录中的所有文件名和路径。然后,它获取这些路径名和文件名,并构建一些HTML超链接,我可以将它们添加到我们的网站,这样我就不必逐个手动执行这些操作。脚本按预期工作,但出于某种原因,两者都可以 os.walk os.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")
    
    1 回复  |  直到 6 年前
        1
  •  0
  •   Mike - SMT    6 年前

    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")