Gcloud VM实例出现Errno 13权限拒绝问题,求解决方案
解决GCP实例中Python保存图片的PermissionError问题
问题描述
运行以下Python图片处理代码时触发权限拒绝错误:
from PIL import Image from PIL import ImageOps filename = 'marmoreio_red_2.jpg' img = Image.open(filename) val = 10 # 裁剪像素数 # 给原图添加10像素蓝色边框 new_img = ImageOps.expand(img, border=val, fill=(0, 0, 255)) # 裁剪处理后的图片(避免出现黑边) cropped = new_img.crop((val, val, 150, 150)) cropped.save('img_teste.jpg','JPEG')
错误信息:
fp = builtins.open(filename, "w+b") PermissionError: [Errno 13] Permission denied: 'img_teste.jpg'
曾尝试修改Apache配置的解决方案,但实例中不存在/etc/apache2/sites-available/wordpress.conf文件。实例相关信息:

可行解决方案
1. 切换到有权限的目录运行代码
- 先执行以下命令确认当前工作目录及其权限:
pwd ls -ld $(pwd) - 如果当前目录对运行代码的用户没有写入权限,切换到用户主目录(
cd ~)后再运行代码。
2. 用绝对路径指定保存位置
修改代码中的save语句,指定一个你有写入权限的绝对路径,比如用户主目录:
# 替换原保存代码,your-username替换为实际用户名(用whoami命令查看) cropped.save('/home/your-username/img_teste.jpg','JPEG')
3. 调整当前目录的写入权限
如果需要在当前目录保存文件,可执行以下命令添加权限(测试环境可用,生产环境需谨慎):
# 给当前目录所有用户添加写入权限 chmod o+w $(pwd) # 或者给运行代码的用户单独添加权限 chown $(whoami):$(whoami) $(pwd) chmod u+w $(pwd)
4. 确认运行代码的用户身份
如果是通过服务账号、后台进程等运行代码,要确保该用户对目标保存目录有写入权限。用whoami命令查看当前运行代码的用户,再核对目录的权限设置。
内容的提问来源于stack exchange,提问作者Greg Rov
相关产品推荐
相关产品推荐

