当前位置: 首页 > news >正文

②. 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

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

相关文章:

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

꧂问题最初 ꧁ input输入图片路径 print图片尺寸 大小 长宽高 有颜色占比>0.001的按照大小排序将打印信息存储excel表格文件名 表格路径 图片大小 尺寸 颜色类型 占比信息input输入的是文件就处理文件 是文件夹&#x1f4c1;就处理文件。路径下的图片 1. 是处理本路径图片 …...

JQuery、JSON、AJAX、XML、IO流、多线程、反射核心知识点详解

JQuery 一、什么是JQuery JQuery是JavaScript的一个框架&#xff0c;对js的封装&#xff0c;使得js简单易学 优点&#xff1a; 1、不用考虑浏览器兼容性问题 2、jquery拥有强大的选择器&#xff0c;简化了js代码 3、jquery提供了很多系统函数&#xff0c;直接调用 二、版本 1.x…...

基于python的多种图像增强算法实现

基于python的多种图像增强算法实现 引言工具算法增强对比度直方图均衡化锐化图像噪声消除中值滤波均值滤波高斯滤波双边滤波增强对比度直方图均衡化总结全部资源引用引言 本项目使用python实现多种空域增强的图像增强算法,并使用了pyqt编写页面。通过点击不同页面的多种按钮,…...

Java前后端交互实现班级管理(查询)

1&#xff0c;数据库创建存储专业信息的表 2&#xff0c;后端&#xff1a; 连接数据库工具类DBUtil.java&#xff1a; package com.ffyc.webserver.util;import java.sql.*;public class DButils {static {try {Class.forName("com.mysql.cj.jdbc.Driver");} catch…...

论文速递 | 8月下旬9月上旬Operations ResearchManagement Science文章精选

编者按 本期我们选取了8月下旬及9月上旬Operations Research文章2篇&#xff0c;Management Science文章4篇期刊文章&#xff0c;着眼于各种不同场景下对于风险的预测、量化及管理&#xff0c;通过聚焦于风险这一主题&#xff0c;体系化地形成文章精选。 文章1 Computation of…...

DataBinding使用报错

val dataBinding DataBindingUtil.setContentView<ActivityMainBinding>(this,R.layout.activity_main)报错一&#xff1a; Unresolved reference: ActivityMainBinding 首先你要知道一个概念&#xff0c;ActivityMainBinding是DataBinding中的一种视频绑定&#xff…...

08Maven中的继承和聚合的作用

Maven中的继承 实际开发中对一个比较大型的项目进行了模块拆分 , 一个project下面创建了很多个modul, 每一个module都需要配置自己的依赖信息 开发中使用的同一个框架内的不同jar包&#xff0c;它们应该是同一个版本&#xff0c;所以整个项目中使用的框架版本需要统一 传统方…...

Ansible运行临时命令及常用模块介绍

目录 一.运行临时命令 1.基本语法格式 2.查看当前版本已安装的所有模块 二.ansible常见模块 1.command模块 2.shell模块 3.raw模块 4.script模块 5.file模块 参数列表&#xff1a; 示例&#xff1a; 6.copy模块 参数列表&#xff1a; 示例&#xff1a; 7.fetch模…...

EtherCAT报文-APRD(自动增量读)抓包分析

0.工具准备 1.EtherCAT主站 2.EtherCAT从站&#xff08;本文使用步进电机驱动器&#xff09; 3.Wireshark1.EtherCAT报文帧结构 EtherCAT使用标准的IEEE802.3 Ethernet帧结构&#xff0c;帧类型为0x88A4。EtherCAT数据包括2个字节的数据头和44-1498字节的数据。数据区由一个或…...

论文阅读:Seeing in Extra Darkness Using a Deep-Red Flash

论文阅读&#xff1a;Seeing in Extra Darkness Using a Deep-Red Flash 今天介绍的这篇文章是 2021 年 ICCV 的一篇 oral 文章&#xff0c;主要是为了解决极暗光下的成像问题&#xff0c;通过一个深红的闪光灯补光。实现了暗光下很好的成像效果&#xff0c;整篇文章基本没有任…...

将license验证加入到系统中

1.将ClientDemo下的cn文件夹的内容导入项目对应的java目录下。 2.将license-config.properties文件导入resources目录下。 3.在项目的pom.xml中添加如下依赖。 <properties><!-- Apache HttpClient --><httpclient>4.5.5</httpclient><!-- License…...

中断机制-interrupt和isInterrupted源码分析、中断协商案例

当前线程的中断标识为true&#xff0c;是不是线程就立刻停止&#xff1f; 答案是不立刻停止&#xff0c;具体来说&#xff0c;当对一个线程&#xff0c;调用interrupt时&#xff1a; 如果线程处于正常活动状态&#xff0c;那么会将该线程的中断标志设置为true&#xff0c;仅此…...

我与COSCon的故事【时光的故事】

曾经 2019年的时候&#xff0c;我还在日本读研究生&#xff0c;做一些物联网 (Internet of Things, IoT) 网络中的底层P2P (Peer to Peer) 通讯仿真模拟。这个方向是新来的Nguyen老师的新方向&#xff0c;它跟计算机强相关&#xff0c;但是很小众&#xff0c;实验室里也没有前辈…...

【科学文献计量】利用pybibx分析Scopus文献数据集(EDA,N-Grams,Cluster,Network analysis,NLP)

利用pybibx分析Scopus文献数据集 1 运行前准备1.1 数据集1.2 前置库2 加载库3 数据导入4 探索式数据分析,即EDA4.1 表格可视化4.2 词云图可视化4.3 N-Grams可视化4.4 文献聚类4.5 主题词演化4.6 桑基图可视化4.7 树图可视化4.8 作者生产力可视化5 网络可视化5.1 文献引用与被引…...

-带你看懂11种API类型及应用-

一起走进多样的API&#xff0c;多样的精彩 随着互联网行业的日益发展&#xff0c;API(Application Programming Interface)这个名词对于绝大多数来说都已不再陌生。然而&#xff0c;实际上&#xff0c;根据不同标准可以划分出不同类型的API。今天&#xff0c;让我们来走…...

集成友盟qq互联分享,导出风险问题处理

处理方案&#xff1a;移除 android:exported"true"即可。 注意友盟SDK QQ share 里默认配置是android:exported"true"&#xff0c;所以要覆盖即可。...

探索数字安全的卓越之选 - Digicert证书

在数字时代&#xff0c;数据安全和隐私保护变得尤为重要。无论是个人网站、电子商务平台还是大型企业&#xff0c;保护用户数据和建立信任都是至关重要的任务。在这个领域&#xff0c;Digicert是一个备受推崇的品牌&#xff0c;提供了卓越的数字证书解决方案&#xff0c;以确保…...

第五章 流程控制 Pro

五、流程控制 1、条件语句 一、if语句&#xff08;三种形式&#xff09; 1、单分支语句: if &#xff08;表达式&#xff09;语句&#xff1b; //表达式可以是任何表达式 0和非0 多条语句加{ }构成复合语句 2、双分支语句 if(表达式) 语句1&#xff1b; else 语句2…...

CSS之实现线性渐变背景

1. background: linear-gradient() background: linear-gradient是CSS中用于创建线性渐变背景的属性&#xff0c;这个属性允许你定义一个在元素的背景中进行渐变的效果&#xff0c;可以从一个颜色过渡到另一个颜色。 基本语法 background: linear-gradient(direction, color-…...

软考 系统架构设计师系列知识点之特定领域软件体系结构DSSA(7)

接前一篇文章&#xff1a;软考 系统架构设计师系列知识点之特定领域软件体系结构DSSA&#xff08;6&#xff09; 所属章节&#xff1a; 第7章. 系统架构设计基础知识 第5节. 特定领域软件体系结构 相关试题 5. 特定领域软件架构&#xff08;Domain Specific Software Archite…...

在软件开发中正确使用MySQL日期时间类型的深度解析

在日常软件开发场景中&#xff0c;时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志&#xff0c;到供应链系统的物流节点时间戳&#xff0c;时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库&#xff0c;其日期时间类型的…...

ES6从入门到精通:前言

ES6简介 ES6&#xff08;ECMAScript 2015&#xff09;是JavaScript语言的重大更新&#xff0c;引入了许多新特性&#xff0c;包括语法糖、新数据类型、模块化支持等&#xff0c;显著提升了开发效率和代码可维护性。 核心知识点概览 变量声明 let 和 const 取代 var&#xf…...

在HarmonyOS ArkTS ArkUI-X 5.0及以上版本中,手势开发全攻略:

在 HarmonyOS 应用开发中&#xff0c;手势交互是连接用户与设备的核心纽带。ArkTS 框架提供了丰富的手势处理能力&#xff0c;既支持点击、长按、拖拽等基础单一手势的精细控制&#xff0c;也能通过多种绑定策略解决父子组件的手势竞争问题。本文将结合官方开发文档&#xff0c…...

Java如何权衡是使用无序的数组还是有序的数组

在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...

pam_env.so模块配置解析

在PAM&#xff08;Pluggable Authentication Modules&#xff09;配置中&#xff0c; /etc/pam.d/su 文件相关配置含义如下&#xff1a; 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块&#xff0c;负责验证用户身份&am…...

【C语言练习】080. 使用C语言实现简单的数据库操作

080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

中医有效性探讨

文章目录 西医是如何发展到以生物化学为药理基础的现代医学&#xff1f;传统医学奠基期&#xff08;远古 - 17 世纪&#xff09;近代医学转型期&#xff08;17 世纪 - 19 世纪末&#xff09;​现代医学成熟期&#xff08;20世纪至今&#xff09; 中医的源远流长和一脉相承远古至…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...

力扣热题100 k个一组反转链表题解

题目: 代码: func reverseKGroup(head *ListNode, k int) *ListNode {cur : headfor i : 0; i < k; i {if cur nil {return head}cur cur.Next}newHead : reverse(head, cur)head.Next reverseKGroup(cur, k)return newHead }func reverse(start, end *ListNode) *ListN…...

Linux部署私有文件管理系统MinIO

最近需要用到一个文件管理服务&#xff0c;但是又不想花钱&#xff0c;所以就想着自己搭建一个&#xff0c;刚好我们用的一个开源框架已经集成了MinIO&#xff0c;所以就选了这个 我这边对文件服务性能要求不是太高&#xff0c;单机版就可以 安装非常简单&#xff0c;几个命令就…...