②. GPT错误:图片尺寸写入excel权限错误

꧂问题最初 ꧁

input输入图片路径
print图片尺寸 大小 长宽高 有颜色占比>0.001的按照大小排序将打印信息存储excel表格文件名 表格路径 图片大小 尺寸 颜色类型 占比信息input输入的是文件就处理文件
是文件夹📁就处理文件。路径下的图片
1. 是处理本路径图片
2. 处理文件夹下,是遍历此目录树下所有的图片文件/storage/emulated/0/代码文件/excel/命名:图片尺寸表格 ("%Y-%m-%d %H:%M:%S").后缀名

꧂ 最初错误❌代码꧁

import os
import glob
import openpyxl
from openpyxl.utils import get_column_letter
from openpyxl.styles import Font
from PIL import Image
from datetime import datetimedef process_image(image_path):img = Image.open(image_path)image_size = os.path.getsize(image_path)width, height = img.sizecolor_info = get_color_info(img)return {'文件名': os.path.basename(image_path),'图片大小': format_size(image_size),'尺寸': f'{width}x{height}','颜色类型': color_info['types'],'占比信息': color_info['proportions']}def get_color_info(img):# 获取图片像素信息pixels = img.load()# 统计颜色的像素数量color_counts = {}total_pixels = img.width * img.heightfor i in range(img.width):for j in range(img.height):color = pixels[i, j]color_counts[color] = color_counts.get(color, 0) + 1# 计算每种颜色的占比color_info = {}for color, count in color_counts.items():proportion = count / total_pixelsif proportion > 0.001:color_info[color] = proportionreturn {'types': len(color_info.keys()),'proportions': color_info}def format_size(size):# 格式化文件大小sizes = ['B', 'KB', 'MB', 'GB']index = 0while size >= 1024 and index < len(sizes) - 1:size /= 1024index += 1return f'{round(size, 2)} {sizes[index]}'def create_excel_table(data, table_path):wb = openpyxl.Workbook()ws = wb.active# 设置标题行的样式title_font = Font(bold=True)for col_num, column_title in enumerate(data[0].keys(), 1):col_letter = get_column_letter(col_num)ws[f'{col_letter}1'] = column_titlews[f'{col_letter}1'].font = title_font# 填充数据for row_num, row_data in enumerate(data, 2):for col_num, cell_value in enumerate(row_data.values(), 1):col_letter = get_column_letter(col_num)ws[f'{col_letter}{row_num}'] = cell_value# 自动调整列宽for col_num, column_title in enumerate(data[0].keys(), 1):col_letter = get_column_letter(col_num)ws.column_dimensions[col_letter].auto_size = True# 保存表格wb.save(table_path)def process_images(input_path):if os.path.isfile(input_path):image_files = [input_path]elif os.path.isdir(input_path):pattern = os.path.join(input_path, '**', '*.jpg')image_files = glob.glob(pattern, recursive=True)else:print("输入路径无效!")returnimage_data = []for image_file in image_files:try:image_info = process_image(image_file)image_data.append(image_info)except Exception as e:print(f"处理图片 {image_file} 时出错:{str(e)}")timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")table_name = f"图片尺寸表格 ({timestamp}).xlsx"table_path = os.path.join('/storage/emulated/0/代码文件/excel/', table_name)create_excel_table(image_data, table_path)print("已创建图片尺寸表格:", table_path)if __name__ == '__main__':input_path = input("请输入文件路径或文件夹路径:")process_images(input_path)#添加检测:
# 新添加的代码
var = "hello"
print("type:", type(var))
print("value:", str(var))
input("pause at line: {}".format(str(__fil e__.split("/")[-1])+": "+str(30)))
print("help:", help(type(var)))比,图片尺寸1.2保存表格1.1.py" && exit   <   File "/storage/emulated/0/qpython/评论截 图问题1.矩阵2.1.2.1空行问题3.4.6色心6.6꧂py thon图片:获得颜色占比,图片尺寸1.2保存表格1.1.py", line 123input("pause at line: {}".format(str(_ _fil e__.split("/")[-1])+": "+str(30)))^ ^^^^^^^^^^^^^^^^^^^^^^^
SyntaxError: invalid syntax. Perhaps you f orgot a comma?
1|:/ $

꧂ 中间的几次错误①꧁

错误发生在第123行的代码中:

input(“pause at line: {}”.format(str(fil e.split("/")[-1])+": "+str(30)))

这行代码中,__file__是一个内置变量,表示当前脚本的文件路径。然后使用split("/")[-1]来获取文件名,并与字符串"pause at line: "和行数30进行拼接。但是,在文件名获取之后,您在__file__split("/")[-1]之间放置了一个空格,导致了语法错误。

解决方法是将空格去掉,并确保代码的各个部分正确连接起来,如下所示:

input(“pause at line: {}”.format(str(file.split("/")[-1]) + ": " + str(30)))

请注意,上述代码只是用于调试目的,如果不需要暂停程序运行,可以将其注释掉或删除。

꧂ 中间的几次错误②꧁

根据错误信息,出现了一个值转换错误。在这段代码中,尝试将一个字典作为Excel表格单元格的值进行赋值,但是Excel表格只能接受基本数据类型的值。

要解决这个问题,你需要修改代码的逻辑,确保在赋值给Excel表格单元格之前将字典值转换为字符串或其他适当的数据类型。你可以使用str()方法将字典转换为字符串,然后再将字符串赋值给Excel单元格。例如:

cell_value = str(cell_value)
ws[f'{col_letter}{row_num}'] = cell_value

通过这样的方式,你可以处理字典值的转换问题,并将其正确地赋值给Excel表格单元格。

꧂代码 ꧁

import os
import glob
import openpyxl
from openpyxl.utils import get_column_letter
from openpyxl.styles import Font
from PIL import Image
from datetime import datetimedef process_image(image_path):img = Image.open(image_path)image_size = os.path.getsize(image_path)width, height = img.sizecolor_info = get_color_info(img)return {'文件名': os.path.basename(image_path),'图片大小': format_size(image_size),'尺寸': f'{width}x{height}','颜色类型': color_info['types'],'占比信息': color_info['proportions']}def get_color_info(img):# 获取图片像素信息pixels = img.load()# 统计颜色的像素数量color_counts = {}total_pixels = img.width * img.heightfor i in range(img.width):for j in range(img.height):color = pixels[i, j]color_counts[color] = color_counts.get(color, 0) + 1# 计算每种颜色的占比color_info = {}for color, count in color_counts.items():proportion = count / total_pixelsif proportion > 0.001:color_info[color] = proportionreturn {'types': len(color_info.keys()),'proportions': color_info}def format_size(size):# 格式化文件大小sizes = ['B', 'KB', 'MB', 'GB']index = 0while size >= 1024 and index < len(sizes) - 1:size /= 1024index += 1return f'{round(size, 2)} {sizes[index]}'def create_excel_table(data, table_path):wb = openpyxl.Workbook()ws = wb.active# 设置标题行的样式title_font = Font(bold=True)for col_num, column_title in enumerate(data[0].keys(), 1):col_letter = get_column_letter(col_num)ws[f'{col_letter}1'] = column_titlews[f'{col_letter}1'].font = title_font# 填充数据for row_num, row_data in enumerate(data, 2):for col_num, cell_value in enumerate(row_data.values(), 1):
#            col_letter = get_column_letter(col_num)cell_value = str(cell_value)ws[f'{col_letter}{row_num}'] = cell_value# 自动调整列宽for col_num, column_title in enumerate(data[0].keys(), 1):col_letter = get_column_letter(col_num)ws.column_dimensions[col_letter].auto_size = True# 保存表格wb.save(table_path)def process_images(input_path):if os.path.isfile(input_path):image_files = [input_path]elif os.path.isdir(input_path):pattern = os.path.join(input_path, '**', '*.jpg')image_files = glob.glob(pattern, recursive=True)else:print("输入路径无效!")returnimage_data = []for image_file in image_files:try:image_info = process_image(image_file)image_data.append(image_info)except Exception as e:print(f"处理图片 {image_file} 时出错:{str(e)}")timestamp = datetime.now().strftime("%Y-%m-%d %H:%M:%S")table_name = f"图片尺寸表格 ({timestamp}).xlsx"table_path = os.path.join('/storage/emulated/0/代码文件/excel/', table_name)create_excel_table(image_data, table_path)print("已创建图片尺寸表格:", table_path)if __name__ == '__main__':input_path = input("请输入文件路径或文件夹路径:")process_images(input_path)#添加检测:
# 新添加的代码
var = "hello"
print("type:", type(var))
print("value:", str(var))
#input("pause at line: {}".format(str(__fil e__.split("/")[-1])+": "+str(30)))
input("pause at line: {}".format(str(file.split("/")[-1]) + ": " + str(30)))
print("help:", help(type(var)))

꧂ 截图꧁

在这里插入图片描述

꧂错误信息 ꧁

❌❌❌❌❌❌❌❌❌❌❌

/data/user/0/org.qpython.qpy/files/bin/qpy thon3.sh "/storage/emulated/0/qpython/评论 截图问题1.矩阵2.1.2.1空行问题3.4.6色心6.6꧂ python图片:获得颜色占比,图片尺寸1.2保存表格1.1.py" && exit
比,图片尺寸1.2保存表格1.1.py" && exit   < 请输入文件路径或文件夹路径:/storage/emula ted/0/DCIM/1696948008360.pngTraceback (most recent call last):  File "/storage/emulated/0/qpython/评论截 图问题1.矩阵2.1.2.1空行问题3.4.6色心6.6꧂py thon图片:获得颜色占比,图片尺寸1.2保存表格1.1.py", line 117, in <module>    process_images(input_path)  File "/storage/emulated/0/qpython/评论截 图问题1.矩阵2.1.2.1空行问题3.4.6色心6.6꧂py thon图片:获得颜色占比,图片尺寸1.2保存表格1.1.py", line 111, in process_images    create_excel_table(image_data, table_p ath)  File "/storage/emulated/0/qpython/评论截 图问题1.矩阵2.1.2.1空行问题3.4.6色心6.6꧂py thon图片:获得颜色占比,图片尺寸1.2保存表格1.1.py", line 86, in create_excel_table    wb.save(table_path)  File "/data/user/0/org.qpython.qpy/files /lib/python3.11/site-packages/openpyxl/wor kbook/workbook.py", line 386, in save    save_workbook(self, filename)  File "/data/user/0/org.qpython.qpy/files /lib/python3.11/site-packages/openpyxl/wri ter/excel.py", line 291, in save_workbook    archive = ZipFile(filename, 'w', ZIP_D EFLATED, allowZip64=True)              ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ ^^^^^^^^^^^^^^^^^^^^^^^^^  File "/data/user/0/org.qpython.qpy/files /lib/python3.11/zipfile.py", line 1281, in  __init__    self.fp = io.open(file, filemode)              ^^^^^^^^^^^^^^^^^^^^^^^PermissionError: [Errno 1] Operation not p ermitted: '/storage/emulated/0/代码文件/ex cel/图片尺寸表格 (2023-10-11 11:45:43).xls x'1|:/ $

꧂GPT给出解读信息 ꧁

这是一个权限错误。根据错误信息的提示,你尝试在 /storage/emulated/0 目录下创建或写入文件,但是没有足够的权限进行操作。

解决这个问题需要检查你的代码中是否存在访问受限的文件或目录,并将其修改为具有读写权限的目录。你可以尝试将表格保存到其他目录中,例如 /storage/emulated/0/Documents/storage/emulated/0/Download 等具有读写权限的目录。另外,还需要检查你的应用程序是否已经获得了足够的权限来访问这些目录。

最后,你可以通过给目录授权来解决此问题。例如,使用以下命令来将 /storage/emulated/0/代码文件/excel 目录的所有权和权限设置为当前用户:

chmod -R 777 /storage/emulated/0/代码文件/excel

这将允许你的代码在该目录中创建和写入文件。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/154526.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

比特币有助减少腐败;微软 Copilot 每月赔 20 美元;AIGC 明年会“洗冷水澡”丨 RTE 开发者日报 Vol.64

开发者朋友们大家好&#xff1a; 这里是 「RTE 开发者日报」 &#xff0c;每天和大家一起看新闻、聊八卦。我们的社区编辑团队会整理分享 RTE &#xff08;Real Time Engagement&#xff09; 领域内「有话题的 新闻 」、「有态度的 观点 」、「有意思的 数据 」、「有思考的 文…

Ubuntu安装QQ

原文网址&#xff1a;2023在Ubuntu安装最新版QQ Linux v3.1.0 - 哔哩哔哩 作者&#xff1a;sprlightning https://www.bilibili.com/read/cv22100663/ 出处&#xff1a;bilibili 2022年末QQ推出了QQ Linux v3.0系列&#xff0c;目前最新版是今年2月24日推出的v3.1.0版本。注意…

用vscode进行远程主机开发

文章目录 插件操作步骤FQA 插件 Remote - SSH - 通过使用 SSH 打开远程计算机或者VM上的文件夹&#xff0c;来连接到任何位置。 操作步骤 使用Vscode利用Remote进行远端开发必须现在Vscode内安装插件 安装完成后&#xff0c;底部工具栏会出现一个绿色按钮&#xff0c;如下…

Python库学习(九):Numpy[续篇三]:数组运算

NumPy是用于数值计算的强大工具&#xff0c;提供了许多数组运算和数学函数&#xff0c;允许你执行各种操作&#xff0c;包括基本运算、统计计算、线性代数、元素级操作等 1.基本运算 1.1 四则运算 NumPy数组支持基本的四则运算&#xff08;加法、减法、乘法和除法&#xff09;…

IntelliJ IDEA失焦自动重启服务的解决方法

IDEA 热部署特性 热部署&#xff0c;即应用正属于运行状态时&#xff0c;我们对应用源码进行了修改更新&#xff0c;在不重新启动应用的情况下&#xff0c;可以能够自动的把更新的内容重新进行编译并部署到服务器上&#xff0c;使修改立即生效。 现象 在使用 IntelliJ IDEA运…

实现基于 GitLab 的数据库 CI/CD 最佳实践

数据库变更一直是整个应用发布过程中效率最低、流程最复杂、风险最高的环节&#xff0c;也是 DevOps 流程中最难以攻克的阵地。那我们是否能在具体的 CI/CD 流程中&#xff0c;像处理代码那样处理数据库变更呢&#xff1f; DORA 调研报告 DORA&#xff08;DevOps Research &am…

练[GYCTF2020]EasyThinking

[GYCTF2020]EasyThinking 文章目录 [GYCTF2020]EasyThinking掌握知识解题思路还得靠大佬正式开始 关键paylaod 掌握知识 ​ thinkphpV6任意文件操作漏洞&#xff0c;代码分析写入session文件的参数&#xff0c;源码泄露&#xff0c;使用蚁剑插件disable_functions绕过终端无回…

【算法设计与分析】— —单源最短路径的贪心算法

&#x1f383;欢迎大家前去观看我的算法设计与分析专栏&#xff1a; 算法设计与分析_IT闫的博客-CSDN博客 希望对大家有所帮助&#xff01; &#x1f383;个人专栏&#xff1a; &#x1f42c; 算法设计与分析&#xff1a;算法设计与分析_IT闫的博客-CSDN博客 &#x1f433;Java…

Spring 复习笔记

目录 第一步存 Bean第二步获取并使用 Bean依赖查找的方式ApplicationContext vs BeanFactory 更简单的存储 Bean1. 配合五大类注解使用2. 方法上添加注解 Bean 更简单的获取 Bean Spring IoC 容器管理的资源就是对象&#xff0c;这个对象也叫做 Bean。Spring 作为一个 IoC 容器…

zabbix自定义监控内容和自动发现

6 目录 一、自定义监控内容&#xff1a; 1.明确需要执行的 linux 命令 2.创建 zabbix 的监控项配置文件&#xff0c;用于自定义 key&#xff1a; 3. 在 Web 页面创建自定义监控项模板&#xff1a; 3.1 创建模板&#xff1a; 3.2 创建监控项&#xff1a; 3.3 创建触发器&#…

VxeTable 表格组件推荐

VxeTable 表格组件推荐 https://vxetable.cn 在前端开发中&#xff0c;表格组件是不可或缺的一部分&#xff0c;它们用于展示和管理数据&#xff0c;为用户提供了重要的数据交互功能。VxeTable 是一个优秀的 Vue 表格组件&#xff0c;它提供了丰富的功能和灵活的配置选项&…

关于优先队列的一点细节

在使用优先队列PriorityQueue时&#xff0c;默认的是升序排列&#xff0c;自己可以指定比较器改为降序排列&#xff0c;例如Collections.reverseOrder()等。 但是在我做力扣的过程中&#xff0c;简单的用一个list的addAll方法添加了优先队列里边所有元素&#xff0c;结果发现添…

【Spring】Spring MVC 程序开发

Spring MVC 程序开发 一. 什么是 Spring MVC1. MVC2. Spring、Spring Boot 与 Spring MVC 二. 创建 Spring MVC 项目1. 创建项目2. 用户和程序的映射3. 获取用户请求参数①. 获取单个参数②. 获取多个参数③. 传递对象④. 后端参数重命名&#xff08;后端参数映射&#xff09;R…

Django开发之进阶篇

Django进阶篇 一、Django学习之模板二、Django学习之中间件默认中间件自定义中间件 三、Django学习之ORM定义模型类生成数据库表操作数据库添加查询修改删除 一、Django学习之模板 在 Django 中&#xff0c;模板&#xff08;Template&#xff09;是用于生成动态 HTML&#xff…

vue-6

一、声明式导航-导航链接 1.需求 实现导航高亮效果 如果使用a标签进行跳转的话&#xff0c;需要给当前跳转的导航加样式&#xff0c;同时要移除上一个a标签的样式&#xff0c;太麻烦&#xff01;&#xff01;&#xff01; 2.解决方案 vue-router 提供了一个全局组件 router…

【PickerView案例13-应用程序对象介绍 Objective-C语言】

一、应用程序对象介绍: 1.应用程序对象介绍: 应用程序介绍: 应用程序介绍: 应用程序介绍: 应用程序启动,本身这一过程,不是应用程序启动就完事儿了, 它有一些比较细节的东西,比如说: 1)info.plist以及pch文件 2)UIApplication对象 这个呢,我们都是分开的去说,…

北斗高精度定位为无人车成为机场运营新常态提供技术保障

在现代快节奏的生活中&#xff0c;人们对交通效率和安全性的需求越来越高。为了满足这一需求&#xff0c;无人驾驶技术被广泛研究和应用。而随着北斗卫星系统的发展&#xff0c;机场无人车正成为潜在的未来运输解决方案。本文将深入探讨北斗卫星如何改变机场运营&#xff0c;以…

一站式数据可视化与分析平台JVS智能BI强大的数据节点功能

在商业智能&#xff08;BI&#xff09;中&#xff0c;数据集是数据的集合&#xff0c;用于分析和报告。数据节点是数据集中的一个重要组成部分&#xff0c;它代表数据集中的一个特定数据点或数据元素。通过使用数据节点&#xff0c;可以对数据进行过滤、分组和计算&#xff0c;…

2785323-77-3,MAL-Alkyne,双功能连接试剂Alkyne maleimide

炔烃马来酰亚胺&#xff0c;Alkyne maleimide,MAL-Alkyne是一种非常有用的双功能连接试剂&#xff0c;可以在生物分子中发挥重要的作用。它的马来酰亚胺基团可以与生物分子中的硫醇基团反应&#xff0c;形成共价键&#xff0c;从而将生物分子与炔烃连接起来。这种连接方式在生物…