PermissionError : [Error 13] Permission denied : 'E:/图片'

我在使用with open下载图片时,遇到了 权限被拒绝。

在这里插入图片描述
当我审查代码时,当我在网上百度时,也没查出个究竟,问了一位好友,终于把它解决了。

#这里是部分代码,然而,问题也就出现在这
tupian = strhtml_xpath.xpath("//center//img/@src")
for tu in tupian:
	with open(r'E:/图片','ab') as fp:
		print("正在下载...")
		fp.write(tu.content)

如图,找到的tupian,它的值是一个个图片链接,是一个列表(list),你要接着用requests继续请求后,在使用write()。
正如:

tupian = strhtml_xpath.xpath("//center//img/@src")
for tu in tupian:
	#请求tu的链接
	t = requests.get(tu)
	#给图片起名
	titles = tu.split('/')[-1]
	#在下载图片时,要给图片起名,否则下载不了。
	with open(r"E:/图片/{}".format(titles),'ab') as fp:
	print("正在下载...{}".format(titles))
	fp.write(t.content)

总结:

使用with open 下载图片时:

  1. 得到了图片的url的列表,要先requests请求,然后才能使用write()方法写入。
  2. 在下载图片时,要给图片起名。
### Python 中解决 `PermissionError` (`Errno 13`) 的方法 在开发过程中,当尝试访问受限资源时,可能会遇到 `PermissionError: [Errno 13] Permission denied` 错误。此错误通常发生在试图读取、写入或执行某些受保护的文件或目录时[^1]。 #### 原因分析 该错误的根本原因在于当前运行程序的用户缺乏对目标文件或目录的操作权限。具体场景可能包括但不限于以下几种情况: - 尝试向只读目录写入数据。 - 使用非管理员账户操作需要超级用户权限的路径。 - 文件或目录的所有者与运行脚本的用户不一致[^2]。 #### 解决方案 ##### 方法一:更改文件或目录权限 可以使用操作系统命令调整文件或目录的权限设置。例如,在 Linux 或 macOS 上,可以通过 `chmod` 和 `chown` 修改权限和所有权: ```bash # 更改文件权限为可读可写 chmod 664 /path/to/file # 改变文件所有者为当前用户 chown $(whoami):$(whoami) /path/to/file ``` 如果是在 Windows 平台上,则需通过右键菜单中的“属性”选项手动赋予相应用户的完全控制权[^1]。 ##### 方法二:以适当的身份运行脚本 确保以拥有必要权限的用户身份来启动应用程序。如果是服务器端应用(如 Gradio),建议避免直接用 root 用户部署服务;而是创建专门的服务账号并授予其最小化所需权限[^4]。 对于本地调试环境下的临时解决方案,可以在终端前加上 sudo 来提升权限级别(仅限于测试阶段): ```bash sudo python your_script.py ``` 注意这会带来安全风险,请谨慎处理生产环境中此类需求[^4]。 ##### 方法三:编程层面捕获异常并优雅降级 即使解决了基础配置上的障碍,在实际编码期间也应考虑加入健壮性的设计思路——即预见潜在失败情形并通过合理方式反馈给最终使用者而不是让整个流程中断。下面展示了一个简单的例子说明如何检测特定类型的IOErrors(比如由于缺少许可引发的那个),并向用户提供更友好的提示信息而非原始技术术语[^3]: ```python import os def check_file_permissions(file_path): try: with open(file_path, 'r') as f: pass return "File accessible." except IOError as e: if "[Errno 13]" in str(e): return "You do not have sufficient permissions to access this file." elif "[Errno 2]" in str(e): return "This file does not exist at the specified location." else: return "An unexpected error occurred." print(check_file_permissions("/nonexistent/path")) print(check_file_permissions("/existing/but/unwritable/file")) ``` 以上代码片段定义了一个函数用于验证指定位置是否存在以及能否正常打开某个文档实例,并根据不同种类的错误返回定制化的消息内容以便更好地指导后续行动方向[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值