一天时间完成Python入坑(开发环境搭建、excel解析、exe打包三步走)

news2024/9/30 5:29:23

0.为什么要入坑Python

        早就知道Python好,Python妙,Python用起来呱呱叫。工作上一直没有什么用得上Python的必要性,就一直没有接触,本次终于来了机会:【图新地球桌面端要对外开放Python API】,开放图新地球的三维场景构建能力给到用户,用户可以在图新地球现有功能的基础上专注于做自身业务逻辑的开发。

1.开发环境搭建(1小时)

        学习入门的过程比较简单,初步了解,暂时不考虑做界面,主要看一看Python在GIS、数据处理方面有哪些成熟的包。

        初步的选择:

  •         开发工具:PyCharm
  •         Python版本:3.11.3(ps:可能后续会降级,作为产品追求的是成熟稳定)
  •         系统:Windows11

核心内容:配置Pycharm的中文界面

ps:安装完以后重启Pycharm即可

ps:如果英语比较差的同学,注意看一下列表是否是【marketplace】,在已安装的列表里面肯定是搜索不到的

 

2.excel文件的解析(5小时)

        2.1选择解析Excel文件的包(openpyxl)

                直接在pycharm的包里面搜索excel相关的包,关键词用excel、xls、xlsx等,实际匹配结果主要是匹配了python包的名称。

 

                做选择,肯定不能忘了万能的【百度】

看了好多个包的介绍以后,最终选择了openpyxl,文档也相对比较全,用起来也相对比较简单。(其他的包刚跑起来有的就报错了)       

https://openpyxl.readthedocs.io/en/stable/

        2.2基本Python编码规范(语法)的了解

                靠缩进进行编码的方式让我好不适应,关键是变量的定义、函数的定义,try catch的语法等还是需要了解一下的。

        Python 教程(https://www.w3school.com.cn/python/index.asp)

ps:现在上面的广告比前几年用的时候要多了。

 

        2.3实现的基本功能

                在GIS软件里面操作Excel主要用于读取数据,测绘院、勘察院、规划院、设计院很多数据都还是在excel里面的,而且操作excel的门槛才是最低的。

        构思完成以后,主要实现的逻辑就是

  • 打开excel
  • 遍历工作表(sheet)
  • 按行遍历内容
  • 获取单元格内容
  • 打印输出

代码如下(太简单了,实现了上面所有功能,也不到100行):

# 这是一个最基本的excel读取示例
# 文件路径的打开和关闭
# sheet的切换
# 指定单元格的值的获取与转换(数字、日期、字符串)
# 合并单元格的值情况查看
# 形成一个exe支持输入一个xlsx文件,在命令行里面显示表格的所有内容
# python解析excel的库
import openpyxl

# 打开指定路径的文件
try:
    my_workbook = openpyxl.load_workbook(filename="D:\pyprj\mypythonexcel\测试工作表.xlsx")
except:
    print("打开D:\pyprj\mypythonexcel\测试工作表.xlsx文件失败")


# 获取对应的工作表Sheet1
# 注意此处一定要区分工作表的名称,中文与大小写要注意清楚,最好都用try cache
try:
    my_currentsheet = my_workbook["Sheet1"]
except:
    print("Sheet1名称的工作表不存在")

# 获取指定单元格的值
value_row1_col1 = my_currentsheet['A1'].value

# 打印指定单元格的值
print("测试excel文件中Sheet1工作表中的A1单元格的值如下:")
print(value_row1_col1)


# 获取对应的工作表“工作表2”
try:
    my_currentsheet = my_workbook["工作表2"]
except:
    print("'工作表2'名称的工作表不存在")

# 获取工作表的内容行数与列数
total_row_num_current_sheet = my_currentsheet.max_row
total_column_num_current_sheet = my_currentsheet.max_column
print("测试excel文件中'工作表2'工作表中共计有",total_row_num_current_sheet,"行",total_column_num_current_sheet,"列")
# 获取指定单元格的值,A2(数字)
value_cell_2_1 = my_currentsheet.cell(row=2,column=1)
print("单元格A2‘第二行第一列’的值为:",value_cell_2_1.value)
# 获取指定单元格的值,B2(汉字)
value_cell_2_2 = my_currentsheet.cell(row=2,column=2)
print("单元格B2‘第二行第一列’的值为:",value_cell_2_2.value)
# 获取指定单元格的值,D2(日期)
value_cell_2_4 = my_currentsheet.cell(row=2,column=4)
print("单元格D2‘第二行第一列’的值为:",value_cell_2_4.value)

# 按行遍历输出每一个单元格的值
for cell_row in range(total_row_num_current_sheet):
    current_row_value = ""
    for cell_col in range(total_column_num_current_sheet):
        current_row_value = current_row_value + "    " + str(my_currentsheet.cell(row=cell_row+1,column=cell_col+1).value)
    print(current_row_value)

# 解析合并的工作表
# 获取对应的工作表“工作表-合并”
try:
    my_currentsheet = my_workbook["工作表-合并"]
except:
    print("'工作表-合并'名称的工作表不存在")

# 获取工作表的内容行数与列数
total_row_num_current_sheet = my_currentsheet.max_row
total_column_num_current_sheet = my_currentsheet.max_column

# 按行遍历输出每一个单元格的值
for cell_row in range(total_row_num_current_sheet):
    current_row_value = ""
    for cell_col in range(total_column_num_current_sheet):
        current_cell = my_currentsheet.cell(row=cell_row+1,column=cell_col+1)
        current_row_value = current_row_value + "    " + str(current_cell.value)
    print(current_row_value)
# 注意:看了上面的输出,我们知道对于有合并的单元格,该单元格的值是合并单元格的左上角的单元格的值,其他单元格的值都是None

 自己造的excel文件如下:

 

 

运行结果如下:

 示例代码和excel文件后面均可下载

3.打包成exe的过程(pyinstall)(2小时)

        操作文件看来不是很难,做好的成果最后还是要用起来的哇,打包也顺带手了解一下,最终选择则了 pyinstaller

        包装exe的预期目的是写好的软件放到其他地方也可以用,那就不能把文件路径写死了哇,需要配置一个命令行参数。

3.1命令行参数配置过程

调试模式下如何配置模拟命令行参数

PyCharm小技巧之怎么方便地编辑命令行参数_rec_char_dict_path_梨梨要努力变强的博客-CSDN博客

这里放一张最喜欢的方式截图

 

 最终做的命令行解析:

用的最简单的模式,exe后面直接跟文件路径,getopt未实际使用。

# python解析excel的库
import openpyxl
import sys
import getopt
import os

def parse_xlsx(argv):
    # 输入的xlsx文件路径
    inputfile = ''
    try:
        # getopt.getopt(args, shortopts, longopts=[])
        # args指的是当前脚本接收的参数,它是一个列表,可以通过sys.argv获得
        # shortopts 是短参数  啥是短参数啊?  类似于 这样:python test.py - h  # 输出帮助信息
        # longopts 是长参数  啥是长参数啊?  类似于 这样:python test.py - help  # 输出帮助信息
        opts, args = getopt.getopt(argv, "hi:o:", ["ifile=", "ofile="])
        if len(args)<2:
            print('使用方法:直接输入xlsx绝对路径即可')
            sys.exit(0)

        # 这里只判断第二个参数是否是一个xlsx的文件路径
        inputfile = args[1]
        b_is_xlsx = inputfile.endswith(".xlsx")
        b_is_xls = inputfile.endswith(".xls")
        b_is_exists = os.path.exists(inputfile)
        if b_is_exists & (b_is_xlsx | b_is_xls):

3.2 附pyinstaller的安装过程,及个人的踩坑过程

参考:Pycharm生成.exe文件_pycharm生成exe_繁霜银河的博客-CSDN博客

打包工具的配置过程:

ps:这是实操过程中遇到的一个问题,我在命令行里面打包,能成功,但是运行报缺少openpyxl库,用下面的这个方法在配置pyinstaller后,在软件界面上打包就没问题。

pycharm内如何打包py项目为.exe可执行文件_pycharm打包_韵诺的博客-CSDN博客

 

最后是打包后的结果

 源文件及打包的exe、示例excel打包下载地址如下:

https://download.csdn.net/download/xiaopeixiaojun/87937514

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【mars3d】Cesium实现雷达放射波

Cesium实现雷达放射波 1、雷达放射波 先看效果图 说明&#xff1a;使用的是mars3d框架&#xff0c;原生的Cesium实现方式可以绕道~ 实现方式&#xff1a; <template><div id"mars3dContainer"></div> </template><script setup> i…

Fiddler抓包基础使用

目录 一、设置抓谷歌浏览器https数据包 1、选中以下选项即可 2、若是选中后还是未抓到HTTPS数据包&#xff0c;则可进行以下操作 二、设置抓取Firefox浏览器HTTPS数据包 1、Firefox的代理需设置系统代理&#xff0c;设置→高级→网络设置&#xff0c;设置为系统代理&#…

【深度学习】5-3 与学习相关的技巧 - Batch Normalization

如果为了使各层拥有适当的广度&#xff0c;“强制性”地调整激活值的分布会怎样呢&#xff1f;实际上&#xff0c;Batch Normalization 方法就是基于这个想法而产生的 为什么Batch Norm这么惹人注目呢?因为Batch Norm有以下优点&#xff1a; 可以使学习快速进行(可以增大学习…

广工赢清华,炸裂!

去年2022年广工对阵清华&#xff0c;我在知乎写了文章 清华赢球靠的是广东第一高中生邹阳和2022届CBA状元王岚嵚。 比分焦灼的第四节关键时刻&#xff0c;邹阳在左角底线持球高高举起篮球&#xff0c;那个球的弧度非常高&#xff0c;皮球以稳稳的抛物线弧度掉入篮筐。 之后&…

Python基础(21)——Python函数实战、递归、lambda、高阶函数

Python基础&#xff08;21&#xff09;——Python函数实战、递归、lambda、高阶函数 文章目录 Python基础&#xff08;21&#xff09;——Python函数实战、递归、lambda、高阶函数目标一. 应用&#xff1a;学员管理系统1.1 系统简介1.2 步骤分析1.3 需求实现1.3.1 显示功能界面…

Streamlit基础教程

streamlit是什么 streamlit是一个开源的python库&#xff0c;它能够快速的帮助我们创建定制化的web应用&#xff0c;而且还非常便于和他人分享&#xff0c;特别是在机器学习和数据科学领域。整个过程不需要你了解任何前端的知识&#xff0c;包括html、css、javascript等&#x…

Vue3 计算属性和侦听器实战(computed、watch)——简易点餐页面

文章目录 &#x1f4cb;前言&#x1f3af;项目介绍&#x1f3af;项目创建&#x1f3af;代码分析&#x1f3af;完整代码&#xff08;含 CSS 代码&#xff09;&#x1f4dd;最后 &#x1f4cb;前言 这篇文章记录一下 Vue3 计算属性和侦听器 &#xff08;computed、watch&#xf…

网络安全自学能学会吗?网络安全如何学习

网络安全是近年来的热门工作&#xff0c;吸引了许多小伙伴开始学习网络安全知识。那么我们应该如何学习网络安全呢&#xff1f;这是一个很多人都在考虑的问题。网络安全可以自学吗&#xff1f;自学网络安全能不能学会&#xff1f; 无论什么知识都是自学的&#xff0c;只是说每…

数学物理学家心中的十大最美方程

“你认为最美的数学、物理方程是什么&#xff1f;”当代十位大数学家、物理学家给出了他们自己的回答。这些回答构成了大雅之美&#xff08;The Concinitas Project&#xff09;的十篇文章。我们为读者带来这些大师对自己眼中最美方程的精彩解读。 1.指标定理 撰文 阿蒂亚爵士…

机器翻译与自动文摘评价指标 BLEU 和 ROUGE

机器翻译与自动文摘评价指标 BLEU 和 ROUGE 在机器翻译任务中&#xff0c;BLEU 和 ROUGE 是两个常用的评价指标&#xff0c;BLEU 根据精确率(Precision)衡量翻译的质量&#xff0c;而 ROUGE 根据召回率(Recall)衡量翻译的质量。 1.机器翻译评价指标 使用机器学习的方法生成文…

安科瑞AWT100无线数据采集通信终端

安科瑞AWT100无线数据采集通信终端 安科瑞 崔丽洁

js \d正则匹配数字失败问题记录

记录一次的正则匹配数字失败的问题 在一次开发中&#xff0c;需要匹配卡号&#xff0c;正则表达式较为复杂&#xff0c;想通过元字符进行简化&#xff0c;便由&#xff1a; new RegExp(^622(12[6-9]|1[3-9][0-9]|[2-8][0-9]{2}|9[01][0-9]|92[0-5])[0-9]{10,}$)变成&#xff…

EMQ的使用和介绍

首先先了解一下底层的协议: 1. MQTT MQTT&#xff08;Message Queuing Telemetry Transport&#xff0c;消息队列遥测传输协议&#xff09;&#xff0c;是一种基于发布/订阅 &#xff08;publish/subscribe&#xff09;模式的"轻量级"通讯协议&#xff0c;该协议构建…

【盘点】百家量子企业正展露头角

光子盒研究院 量子计算是一个可能彻底改变我们在金融、材料科学、密码学和药物发现等领域解决复杂问题的方式。过去十年左右&#xff0c;量子计算初创公司正迅速崛起。 现在&#xff0c;根据光子盒的量子企业数据库&#xff0c;全球大约有一千家公司直接参与到量子技术中&#…

反调试技术

文章目录 前言系统API实现方式IsDebuggerPresent (0x2)NtGlobalFlag&#xff08;0x68&#xff09;Heap flags&#xff08;0x18&#xff09;CheckRemoteDebuggerPresentNtQueryInformationProcessZwSetInformationThread 示例示例1比较明文字符串和输入字符串NtGlobalFlag时间差…

支持向量机SVM的原理和python实现

文章目录 1 SVM概述1.1 概念1.2 SVM的优缺点1.2.1 优点1.2.2 缺点 2 在python中使用SVM2.1 scikit-learn库2.2 SVM在scikit-learn库中的使用2.2.1 安装依赖库2.2.2 svm.SVC2.2.3 应用实例 总结 1 SVM概述 1.1 概念 支持向量机&#xff08;SVM&#xff09;是一类按监督学习方式…

CRM系统如何选择?哪些是必备功能?

CRM系统可以收集、整理并分析客户数据、优化企业销售流程、实现团队协作和共享&#xff0c;提高客户转化率&#xff0c;实现业绩增长。那么&#xff0c;如何选择CRM系统&#xff1f;CRM系统哪家好&#xff1f; 一、明确自己的业务需求 不同行业和规模的企业有不同的业务需求&…

JMU 软件工程经济学 复习总结

文章目录 碎碎念0. 基准收益率 i1. 现金流量图2. 净现值 NPV&#xff0c;内部收益率 IRR3. 单利&#xff0c;复利计算4. 等额年金NAV5. 动态回收期 P t ′ P_t Pt′​6. 固定资产折旧 [书P44]7. 增值税8. 软件行业增值税的即征即退9. 利息备付率 ICR&#xff0c;偿债备付率 DSC…

这6种最佳移动自动化测试工具你知道吗?

最好的移动自动化测试工具 在本文章关于移动应用程序测试的这一部分中&#xff0c;我们将研究 2023 年 6 种最佳移动自动化测试工具。 1、Appium Appium 是一个非常流行的开源自动化测试框架&#xff0c;支持各种操作系统的自动化。它可以与本机、混合和移动 Web 应用程序一…

微机原理基础知识

前言 微机原理期末复习的一些概念性的基础知识总结。 内容 &#xff08;1&#xff09;微处理器、微机与微机系统三者之间有什么异同&#xff1f; &#xff08;1&#xff09;把CPU&#xff08;运算器和控制器&#xff09;用大规模集成电路技术做在一个芯片上&#xff0c;即为微…