Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >ctypes dll调用在ipython中工作,但在常规python中不工作。

ctypes dll调用在ipython中工作,但在常规python中不工作。
EN

Stack Overflow用户
提问于 2018-03-13 14:00:28
回答 1查看 509关注 0票数 1

注意:我原来的问题是因为话题不对而结束的,但我将重新提交这个问题,并给出一个可能遇到类似问题的人的答案。

我的系统细节:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Windows 10 64-bit
Python 3.6 64-bit

不幸的是,由于保密性,我无法共享数据文件或dll,但我使用供应商提供的dll (用Delphi编写)来读取二进制仪器数据文件。我也没有访问源代码,也没有任何权利的详细编码支持。

下面显示了一个名为filereadtest.py的示例脚本。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import ctypes 

binary_file = r"C:\path\to\binaryfile"
dll_file = r"C:\path\to\dll.dll"
dll = ctypes.WinDLL(dll_file)
dll.OpenDataFile.argtypes = [ctypes.c_wchar_p]
dll.OpenDataFile.restype = ctypes.c_int32
fhandle = dll.OpenDataFile(binary_file)
print(fhandle)
dll.CloseDataFile()

当使用ipython调用时,此调用是成功的,但当使用常规python调用时,此调用将提供一个OSError:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
>>> ipython filereadtest.py
0

>>> python filereadtest.py
Traceback (most recent call last):
  File "filereadtest.py", line 8, in <module>
    fhandle = dll.OpenDataFile(binary_file)
OSError: [WinError 250477278] Windows Error 0xeedfade
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-13 14:00:28

IPython导入了许多库,并隐藏在导入树的深处,windows特定的标志导入了win32com,而后者又导入了pythoncom。pythoncom导入加载库pythoncomXX.dll。(XX=36或python版本号)。在这种情况下,dll依赖于正在加载的这个库。http://timgolden.me.uk/pywin32-docs/pythoncom.html

以下脚本工作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
import ctypes 
import pythoncom  # necessary for proper function of the dll

binary_file = r"C:\path\to\binaryfile"
dll_file = r"C:\path\to\dll.dll"
dll = ctypes.WinDLL(dll_file)
dll.OpenDataFile.argtypes = [ctypes.c_wchar_p]
dll.OpenDataFile.restype = ctypes.c_int32
fhandle = dll.OpenDataFile(binary_file)
print(fhandle)
dll.CloseDataFile()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49266538

复制
相关文章
运维工作中sed常规操作命令梳理
sed是一个流编辑器(stream editor),一个非交互式的行编辑器。它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕;接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。sed主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。在日常的运维工程中,会时常用sed命令来处理行操作,下面根据工作中的使用经验对sed的用法做一梳理: sed(stre
洗尽了浮华
2018/01/22
1K0
运维工作中sed常规操作命令梳理
Python实战-解决工作中的重复工作(一)
目前公司的项目管理采用开源项目redmine,对于redmine本文不多做介绍,有兴趣的可以自行百度了解下。
Bug生活2048
2018/08/31
2.1K0
Python实战-解决工作中的重复工作(一)
用Python在工作中“偷懒”
这类工作大部分是重复性工作,但占据了你比较多的时间,有时候用蛮力做的事情,可以有更省时省力的办法。
数据森麟
2019/11/14
8610
Windows凭据不工作
如果不是敲错IP、用户名、密码,报凭据不工作,一般情况下执行这几句命令后重启远程服务就正常了
Windows技术交流
2021/06/15
6.1K0
python 3 在工作中的应用
在notepad++的程序根目录下,编辑shortcuts.xml文件。在 UserDefinedCommands节点下输入:
py3study
2020/01/17
5050
自动合并工作簿中各工作表数据
合并多表数据是工作中常见的情形。本文介绍一种在Excel及Power BI中不使用任何公式,快速合并一个工作簿中多个工作表的方法。
wujunmin
2021/09/07
1.6K0
自动合并工作簿中各工作表数据
mongo中命令工作原理
runCommand命令是mongo的执行命令,可以执行mongo的任何命令,其它命令比如Drop,Count命令则是runCommand的简写形式,runCommand命令执行完成后有详细的相应结果。
莫问今朝
2019/02/25
4300
Python中的chdir函数:更改工作目录利器
在Python中,`chdir`是一个内置函数,用于更改当前工作目录。今天就给大家简单介绍一下该函数的用法和一些注意事项,一起来学习一下吧。
华科云商小彭
2023/10/07
2490
Python中的chdir函数:更改工作目录利器
面试题35:工作中如何针对jvm进行调优?
【对于正常运行的系统】 使用jmap来查看JVM中各个区域的使用情况。 使用jstack来查看线程的运行情况,比如:哪些线程阻塞、是否出现了死锁。 使用jstat命令来查看垃圾回收情况,特别是fullGC,如果fullGC比较频繁,那么就得进行调优了 初步猜测频繁发生fullGC的原因。如果频发发生fullGC但是却一直没有出现内存溢出,那么表示fullGC实际上是回收了很多对象了,所以这些对象最好能在youngGC里就直接回收掉,避免这些对象进入老年代。对于这种情况,就要考虑这些存活时间不长的对象是不是比
爪哇缪斯
2023/05/09
1640
面试题35:工作中如何针对jvm进行调优?
工作中的工作心得随时分享(2)
做cts的时候,使用相同VT的cell,这可以降低由于VT miscorrelation引起的clock skew variation。
白山头
2022/09/22
2810
在ctypes的C共享库中调用Python函数
ctypes 是Python标准库中提供的外部函数库,可以用来在Python中调用动态链接库或者共享库中的函数,比如将使用大量循环的代码写在C语言中来进行提速,因为Python代码循环实在是太慢了。大致流程是通过 ctypes 来调用C函数,先将Python类型的对象转换为C的类型,在C函数中做完计算,返回结果到Python中。这个过程相对是比较容易的。
王云峰
2023/10/23
3760
mac 工作中命令总结
前面可以加nohup 后面加 &,(只加& 有时候不行,可以先用只加&的测试一下可以不)
solate
2019/07/22
9130
详解javascript中this的工作原理
在 JavaScript 中 this 常常指向方法调用的对象,但有些时候并不是这样的,本文将详细解读在不同的情况下 this 的指向。
用户6167509
2019/09/04
1.2K0
SwiftUI 中布局的工作原理
在这个技术项目中,我们将探讨 SwiftUI 如何处理布局。有些事情已经解释过了,有些可能是你自己弄明白的,但更多的是你在这一点上想当然的事情,所以我希望一个详细的探索能真正为 SwiftUI 的工作方式提供一些启示。
Swift社区
2021/11/26
3.8K0
SwiftUI 中布局的工作原理
httpd中工作模型的比较
http服务,需要客户端和服务器端建立连接,httpd有三种工作模式:prefork worker event
星哥玩云
2022/06/30
7680
工作中遇到的点滴
它和很多工作一样,都很累、很苦。但我们需要学会的是苦中取乐~这篇准备记录下工作中的一些点滴
阿超
2022/08/16
2490
工作中问题记录
01.06 一月 06, 2018 10:21:07 上午 org.apache.coyote.http11.AbstractHttp11Processor process 信息: Error par
二十三年蝉
2018/02/28
1.1K0
工作中问题记录
HDFS中SecondaryNamenode工作原理(7)
我们在刚开始学习HDFS的时候,知道HDFS主要由管理者NameNode和DataNode组成。其中还有一个SecondaryNameNode在HDFS中扮演着辅助的作用,负责辅助NameNode管理
大数据梦想家
2021/01/22
6380
HDFS中SecondaryNamenode工作原理(7)
Git工作中的使用
git是一个命令行工具,当前的最新版本是Git-1.9.5-preview20141217.exe。安装过程很简单,一路默认next既可。
matt
2022/10/25
3330
Git工作中的使用
t检验的工作原理和在Python中的实现
因此,总有一天你可能会使用t检验,深入了解它的工作原理非常重要。作为开发人员,通过从头开始实现假设检验以理解。
AiTechYun
2018/08/16
9.1K0
t检验的工作原理和在Python中的实现

相似问题

信号处理程序在python中工作,但在ipython中不工作。

13

禁用在IE中工作,但在firefox中不工作

12

ipython中没有名为spacy的模块,但在常规python解释器中工作得很好

40

MVC方法调用在Fiddler中工作,但在浏览器中不工作

20

pyproj不处理ipython (但在CLI上工作)

12
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文