广告
返回顶部
首页 > 资讯 > 后端开发 > Python >Delphi中使用python脚本读取E
  • 415
分享到

Delphi中使用python脚本读取E

脚本Delphipython 2023-01-31 06:01:12 415人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

前段时间,在正式项目中使用python来读取excel表格的数据。具体需求是,项目数据库中有些数据需要根据Excel表格里面的数据进行一些调整,功能应该比较简单。为了学习Python,决定使用Delphi+Python来实现。Delphi中

前段时间,在正式项目中使用python来读取excel表格的数据。具体需求是,项目数据库中有些数据需要根据Excel表格里面的数据进行一些调整,功能应该比较简单。为了学习Python,决定使用Delphi+Python来实现。Delphi中是使用PythonForDelphi控件来加入Python引擎的。实现整个功能用了大半天时间。
delphi项目方面,需要先修改数据表的封装类,使它能在Python中出现并使用,简单操作数据表。改了几个地方:
  1. 学控件中的Delphi modules工程,在项目中引入Python引擎,加入一个Delphi模块。
  2. 将表操作基类改成从TComponent中继承过来@_@,目的是为了能在py脚本中直接使用published的属性;新实现一个该基类的包装类,继承自WrapDelphiClasses.TPyDelphiComponent,并注册到Delphi模块中。
  3. 新加个菜单,调用外部的PY脚本。贪简单,只在该功能的地方加这些代码,在调用脚本前,注册了具体的表封装对象。
Python方面,有两个自己写的脚本,其中一个是使用win32com封装Excel操作的pyExcel.py,简陋的代码,够用就行。另一个是实现具体的功能的脚本,代码入下:
import time
from pyExcel import PYExcel
import types
from Delphi import *
lDEHs = {}
CR = chr(10)# + chr(13)
CRCR = CR + CR
def AddSpace(aStr):
    CR_R = chr(10)
    SPACESTR = '            '
    return aStr.replace(CR_R, CR_R+SPACESTR)
    pass
def setDEFZ(uKW):
    deb.Edit()
    s1 = deb.DEFZ
    uGZNR = AddSpace(s1.decode('gbk'))
    uGZNR = u'【工作内容】%s' %(uGZNR)
   
    uDEFZ = u'%s%s【附注说明】%s【勘误记录】%s%s' \
        %(uGZNR, CRCR, CRCR, uKW, CRCR)
    deb.DEFZ = uDEFZ.encode('gbk')
    deb.Post()
    pass
def setDEFZByXls():
    global CR, lDEHs
    col_DEH = 'A'
    col_KW = 'B'
    iRow = 0
    iEmpty = 0
    xl1 = PYExcel()
    if xl1.FindBook('Sheet1'):
        while (iEmpty<10):
         iRow += 1
         try:
             sDEH = str(xl1.getRangeValue(col_DEH + str(iRow)))
             pass
         except:
             sDEH = None
             pass
         if not sDEH or (sDEH=='') or (sDEH=='None'):
            iEmpty += 1
         elif deb.Locate('DEH', sDEH):
             lDEHs.setdefault(sDEH, sDEH)
             s2 = AddSpace(xl1.getRangeValue(col_KW + str(iRow)))
             setDEFZ(s2)
def setOthers():
    global lDEHs
   
    deb.First()
    while not deb.Eof():
        if not lDEHs.has_key(deb.deh):
            lDEHs.setdefault(deb.deh, deb.deh)
            try:
                setDEFZ(u'')
            except:
                pass
           
        deb.Next()
setDEFZByXls()
setOthers()
在编写调试这个脚本用了大半的时间,其中碰到些问题:
  1. 编码问题。好在前段时间刚理解Unicode的含义,现在在实际中解决了这个问题。Delphi中的String保存的中文信息,通常都是使用系统的默认字符集来编码的。从Delphi中取出String如:s1 = deb.DEFZ,s1这时的编码是系统默认字符集(gbk)。在py脚本中使用代码:s1.decode('gbk')进行解码,得到Unicode字符串。保存回Delphi中时,再将Unicode使用gbk编码:deb.DEFZ = uDEFZ.encode('gbk')。
  2. PythonforDelphi控件,使用Delphi的Rtti技术,py脚本中能直接使用部分published的属性,简化了许多工作量。不过published的方法、过程和数组属性还是不能直接使用,需要在对应的封装类中自己包装。
  3. 使用PyScripter工具编写该脚本,很方便。不过当前好象还没有什么好的方法来调试以这种运行方式运行的脚本。现在PyScripter支持远程调试功能,以后有空要想办法解决这个问题。
 
 

--结束END--

本文标题: Delphi中使用python脚本读取E

本文链接: https://www.lsjlt.com/news/190564.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Delphi中使用python脚本读取E
    前段时间,在正式项目中使用Python来读取Excel表格的数据。具体需求是,项目数据库中有些数据需要根据Excel表格里面的数据进行一些调整,功能应该比较简单。为了学习Python,决定使用Delphi+Python来实现。Delphi中...
    99+
    2023-01-31
    脚本 Delphi python
  • Python实用脚本(1):读取Prop
    JAVA本身提供了对于Properties文件操作的类,项目中的很多配置信息都是放在了Properties文件。但是Python并没有提供操作Properties文件的库,所以,自己动手写个一个可以加载Properties文件的脚本。cla...
    99+
    2023-01-31
    脚本 Python Prop
  • 使用Python脚本获取CPU温度
    不同的linux发行版可能获取CPU温度文件的目录不所不同,可自行百度。 # fedora filepath :'/sys/class/hwmon/hwmon0/device/hwmon/hwmon0/temp2_input' #...
    99+
    2023-01-31
    脚本 温度 Python
  • 使用Shell脚本怎么从文件中逐行读取内容
    使用Shell脚本怎么从文件中逐行读取内容?针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。使用for循环从文件中逐行读取内容:在默认情况现下此方法是逐个单词的读取文件内容,因...
    99+
    2023-06-09
  • 如何使用Shell脚本循环读取文件中每一行内容
    这篇文章主要介绍了如何使用Shell脚本循环读取文件中每一行内容,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。前言本文主要给大家介绍了关于使用Shell脚本循环读取文件每一行...
    99+
    2023-06-09
  • Jmeter如何使用BeanShell取样器调用Python脚本
    1、在线程组中按以下方式添加【BeanShell取样器】: 2、把以下这段代码放到【BeanShell取样器】的脚本区域:  注意点: (1)命令里的Python脚本路径...
    99+
    2022-11-13
  • 怎么用SQL脚本读取Excel中的sheet数量及名称
    这篇文章主要介绍“怎么用SQL脚本读取Excel中的sheet数量及名称”,在日常操作中,相信很多人在怎么用SQL脚本读取Excel中的sheet数量及名称问题上存在疑惑,小编查阅了各式资料,整理出简单好用...
    99+
    2022-10-18
  • 【脚本】python中wmi介绍和使用
    一:WMI基础知识===================================================================WMI 最初于1998年作为一个附加组件与 Windows NT 4.0 Servic...
    99+
    2023-01-31
    脚本 python wmi
  • 使用Python脚本提取基因组指定位置序列
    引言 在基因组分析中,我们经常会有这么一个需求,就是在一个fasta文件中提取一些序列出来。有时这些序列是一段完整的序列,而有时仅仅为原fasta文件中某段序列的一部分。特别是当数据...
    99+
    2022-11-11
  • Python脚本开发漏洞的批量搜索与利用(GlassFish 任意文件读取)
    目录Python 开发学习的意义:(1)学习相关安全工具原理.(2)掌握自定义工具及拓展开发解决实战中无工具或手工麻烦批量化等情况.(3)在二次开发 Bypass,日常任务,批量测试...
    99+
    2022-11-11
  • 利用Shell脚本循环读取文件中每一行的方法详解
    前言 本文主要给大家介绍了关于使用Shell脚本循环读取文件每一行的相关内容,分享出来供大家参考学习,下面话不多说了,来一起看看详细的介绍吧。 一、使用for循环 for line in `cat f...
    99+
    2022-06-04
    详解 脚本 文件
  • 【Python】使用Python读取JSON文件中的内容
    文章目录 一、JSON文件简介二、借助Python处理JSON文件1、读取字典类型的JSON文件2、读取列表类型的JSON文件3、封装读取JSON文件的函数 一、JSON文件简介...
    99+
    2023-08-31
    python json
  • 如何在Python中使用pandas读取数据
    今天就跟大家聊聊有关如何在Python中使用pandas读取数据,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。一、三种数据文件的读取二、csv、tsv、txt 文件读取1)CSV文件...
    99+
    2023-06-15
  • 怎么在Linux中使用Shell脚本获取终端宽度
    这篇文章给大家介绍怎么在Linux中使用Shell脚本获取终端宽度,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。获取终端大小时候的学习在写shell脚本时想输出一行占满整个终端屏幕宽度的 横杠 发现for循环会导致执行...
    99+
    2023-06-09
  • python中怎么使用 svn脚本删除文件
    这篇文章将为大家详细讲解有关python中怎么使用 svn脚本删除文件,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。python svn脚本需要我们不断的学习,在学习的过程中我们会遇到不少的...
    99+
    2023-06-17
  • Python中怎么使用pdfplumber读取PDF写入Excel
    本篇内容介绍了“Python中怎么使用pdfplumber读取PDF写入Excel”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、Pyth...
    99+
    2023-07-02
  • 如何在Python中使用NumPy来创建Unix脚本?
    Python是一种功能强大的编程语言,它拥有许多优秀的库和工具来提高开发者的效率。其中,NumPy是一个非常重要的库,它提供了许多高级的数学和科学计算功能,使得开发者可以更加轻松地进行数据分析和处理。同时,NumPy也可以用来创建Unix...
    99+
    2023-06-16
    numy shell unix
  • 使用Python怎么读取文件名中的数字
    这期内容当中小编将会给大家带来有关使用Python怎么读取文件名中的数字,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。python可以做什么Python是一种编程语言,内置了许多有效的工具,Python几...
    99+
    2023-06-14
  • 如何在Linux中使用shell脚本获取当前工作目录
    如何在Linux中使用shell脚本获取当前工作目录?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。如下:workdir=$(cd $(dirname $0)...
    99+
    2023-06-09
  • Python 中如何使用 Git 管理容器中的 Bash 脚本?
    在当今的软件开发中,容器化已经成为一种非常流行的方式。容器化可以让开发者更加方便地管理开发环境和部署环境。在容器中使用 Bash 脚本是一种非常方便的方式,可以让开发者更加灵活地管理和部署容器。本文将介绍如何使用 Git 管理容器中的 B...
    99+
    2023-10-14
    git 容器 bash
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作