我已经有一段时间运行脚本了,没有任何问题,但是最近在目录中有一个临时文件的问题。
有问题的文件在Windows PC上以“〜$”开头,因此该文件的脚本错误,因为它不是正确的DOCX文件。该文件未打开,是在将网络驱动器传输到外部硬盘驱动器后发生的。检查目标驱动器(带有隐藏文件等)也不显示此文件。
我尝试了快速修复:
for (dirpath,dirnames,filenames) in os.walk('.'):
for filename in filenames:
if filename.endswith('.docx'):
filesList.append(os.path.join(dirpath,filename))
for file in filesList:
if file.startswith('~$'):
pass
else:
<rest of script>
但是脚本似乎忽略了此操作,然后再次出错,因为文件不是“有效”文件。
有人知道这为什么不起作用,还是一种快速的解决方案让它忽略任何类似的文件?我会尝试一个if是否存在,但是从技术上说该文件确实存在,所以这也不起作用。
很抱歉,如果它有点愚蠢,但是我对A.为什么它在那里和B.如何在它周围编码感到困惑。
答案 0 :(得分:2)
在第二个代码块中,变量file
包含整个文件路径,而不仅仅是文件名。
相反,跳过第一个块中的“不良”文件,而不是附加到列表中:
for (dirpath,dirnames,filenames) in os.walk('.'):
for filename in filenames:
if filename.endswith('.docx'):
if not filename.startswith('~$'):
filesList.append(os.path.join(dirpath,filename))
另一种选择是在第二个代码块中检查os.path.basename(file)
。