You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python移动文件时出现[WinError 5] Access is denied报错如何解决?

问题根源
  • 你代码里的os.replace()参数使用不符合要求:当你要把文件移动到目标目录时,dst参数必须指定完整的目标文件路径,而不是只传目录路径。你现在只传了桌面目录路径,系统会尝试把源文件直接替换成这个目录对象,自然会触发权限/操作不允许的报错,和你有没有管理员权限基本没关系。
修复方案

方法1:手动拼接目标完整路径

直接在dst里带上源文件的文件名,修改后代码如下:

import os

src = "C:\\INSTALLER\\sample_text.txt"
# 目标路径补全文件名即可
dst = "C:\\Users\\mats\\Desktop\\sample_text.txt"

try:
    os.replace(src, dst)
    print("File successfully moved...")
except Exception as x:
    print(x)
    print("\nSomething happened! :(")

方法2:自动提取文件名拼接(通用性更强)

如果不想手动写文件名,可以用os.path.basename()自动获取源文件的文件名拼接,适合批量移动文件的场景:

import os

src = "C:\\INSTALLER\\sample_text.txt"
dst_dir = "C:\\Users\\mats\\Desktop"
# 自动拼接完整目标路径
dst = os.path.join(dst_dir, os.path.basename(src))

try:
    os.replace(src, dst)
    print("File successfully moved...")
except Exception as x:
    print(x)
    print("\nSomething happened! :(")

可选方案:使用shutil.move简化操作

如果你不想手动拼接文件名,可以直接用shutil模块的move方法,它支持直接传入目标目录路径,会自动处理文件名的拼接:

import shutil

src = "C:\\INSTALLER\\sample_text.txt"
dst = "C:\\Users\\mats\\Desktop"

try:
    shutil.move(src, dst)
    print("File successfully moved...")
except Exception as x:
    print(x)
    print("\nSomething happened! :(")
额外排查点

如果修改后还是报错,可以再检查这两项:

  • 确认源文件C:\\INSTALLER\\sample_text.txt没有被其他程序(比如记事本、Office软件)占用打开
  • 确认目标目录你当前的用户确实有写入权限,不需要特意开PyCharm的管理员权限,普通用户权限默认就有桌面目录的写入权限

内容的提问来源于stack exchange,提问作者node247

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 05:18:01