os.walk 和 os.scandir 返回 ~$ 代替文件名的第一个和第二个字符
os.walk and os.scandir are returning ~$ in place of the 1st and 2nd characters of a file name
我有一个 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")
通过评论中提供的 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 脚本,它正在读取共享驱动器上目录中的所有文件名和路径。然后它获取这些路径名和文件名并构建一些 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")
通过评论中提供的 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")