Python运行报PermissionError: [WinError 5] Access is denied如何解决
问题排查结果
核心错误原因
你代码中调用os.rename()时的参数填写错误:你传入的源路径是C:/Users/Ajay/Downloads完整目录,并非筛选出来的单个xlsx/csv文件路径,触发的操作是把整个Downloads系统目录移动/重命名到目标路径,Windows对用户目录下的Downloads文件夹有默认权限保护,因此触发权限报错,和你是否用管理员身份运行无关。
修正后可运行代码
import os import shutil # 先确认目标目录存在,不存在则自动创建 target_dir = 'C:/Users/Ajay/Projects/GFD' os.makedirs(target_dir, exist_ok=True) source_dir = 'C:/Users/Ajay/Downloads' for name in os.listdir(source_dir): if name.endswith('.xlsx') or name.endswith('.csv'): # 拼接完整的源文件路径和目标文件路径 src_path = os.path.join(source_dir, name) dst_path = os.path.join(target_dir, name) # 执行移动操作 shutil.move(src_path, dst_path) print(f"已移动文件:{name}")
额外注意事项
- 如果目标目录下已经存在同名的xlsx/csv文件,
shutil.move()会直接覆盖原有文件,如有需要可以在移动前加判断逻辑,避免文件丢失 - 移动文件前确认对应文件没有被Excel、WPS等软件打开,被占用的文件也会触发权限报错
内容的提问来源于stack exchange,提问作者Steve Kundukulangara
相关产品推荐
相关产品推荐

