使用os.listdir获取文件列表出现~$前缀临时文件该如何解决
问题原因
~$ 开头的文件是微软Office软件生成的临时隐藏文件:当你打开对应的Excel/Word/PPT文件时,Office会自动创建该类文件用于存储临时修改、异常恢复数据,文件默认带有隐藏属性,正常关闭目标文件后会被自动删除,若软件异常退出则可能残留。os.listdir() 会默认返回目录下所有文件/文件夹名称,包括隐藏属性的文件,因此会将这类临时文件纳入返回结果。你遇到的路径报错是因为拼接文件路径时丢失了前缀的~字符,导致路径和实际临时文件路径不符。
解决/规避方法
- 方案1:直接过滤临时文件
遍历文件列表时跳过所有~$开头的文件即可,代码示例:import os path = os.getcwd() # 过滤临时文件 files = [f for f in os.listdir(path) if not f.startswith('~$')] - 方案2:叠加文件类型校验
如果仅需要处理特定格式的文件,可以额外增加后缀判断,避免其他无关文件被误处理:# 仅保留xlsx格式的正常文件 files = [f for f in os.listdir(path) if f.endswith('.xlsx') and not f.startswith('~$')] - 方案3:路径拼接用标准方法
不要手动拼接文件路径,使用os.path.join()方法自动处理路径分隔符、特殊字符,避免字符丢失的问题:for file_name in files: full_file_path = os.path.join(path, file_name) # 后续读取逻辑直接使用full_file_path
内容的提问来源于stack exchange,提问作者Emi OB
相关产品推荐
相关产品推荐

