小编Mar*_*nen的帖子

Python ctypesgen/ctypes:如何以单字节对齐方式将结构字段写入文件

使用 ctypesgen,我生成了一个结构体(我们称之为 mystruct),其字段定义如下:

[('somelong', ctypes.c_long),
 ('somebyte', ctypes.c_ubyte)
 ('anotherlong', ctypes.c_long),
 ('somestring', foo.c_char_Array_5),
 ]
Run Code Online (Sandbox Code Playgroud)

当我尝试将该结构的实例(我们称之为 x)写入文件时: open(r'rawbytes', 'wb').write(mymodule.mystruct(1, 2, 3, '12345')),我注意到写入文件的内容不是字节对齐的。

我应该如何将该结构写入文件以使字节对齐为 1 字节?

python struct ctypes

4
推荐指数
1
解决办法
3057
查看次数

我不能支持unicode字符串serialport.write("\ x23o0\x23f")

我们在使用以下代码时遇到了困难

#Get the heading from the IMU
#Translate the IMU from magnetic north to true north since the calcs use true north
def getcurheading():
# The escape character for # is \x23 in hex
    serialport.write("\x23o0 \x23f")
    headresponse = serialport.readline()
#   print(headresponse)
    words = headresponse.split(",")
    if len(words) > 2:
        try:
            curheading = (float(words[0])) + 180
            if curheading + Declination > 360: curheading = curheading - 360 + Declination
            else: curheading = curheading + Declination
        except:
            curheading = 999
#   print(curheading)
        return …
Run Code Online (Sandbox Code Playgroud)

unicode python-3.x

4
推荐指数
1
解决办法
8826
查看次数

与 WORD 和 DWORD 定义一起使用的 ctypes 类型

我必须将用 C 编写的 DLL 包装到 Python 中。为此,我使用该ctypes模块。

但是,某些 C 函数使用WORD, 和DWORD类型。我读过一些关于这些类型的文章,但我很难理解两者之间的确切区别以及ctypes为它们选择什么。

仅供参考,我在 64 位 Windows 机器上工作。

python dll ctypes

4
推荐指数
1
解决办法
5573
查看次数

如何强制 Python 3 在比较字节和字符串时引发异常

比较字节和字符串对象时,Python 3 返回“False”。

>>> b'' == ''
False
Run Code Online (Sandbox Code Playgroud)

有没有办法强制解释器引发异常?也许调用 python3 时有一些标志?

python python-3.x

4
推荐指数
1
解决办法
199
查看次数

适用于Python 3.x的Sqlite版本

我想在Python 3.1.3中使用sqlite3,我需要将enable_load_extension设置为true.要做到这一点,我相信我需要sqlite版本3.x. 从这里的阅读帖子来看,看起来合适的sqlite版本应该与python 2.6及更高版本捆绑在一起.但是,当我这样做时:

import sqlite3
sqlite3.version_info
Run Code Online (Sandbox Code Playgroud)

返回的结果是:'2.4.1'

我在运行Python 2.6的另一台机器上得到了相同的答案.

pysqlite站点没有Python 3.x的二进制文件.我的Python副本来自官方Python站点.

那么:1)我应该用什么版本的sqlite 3.1?2)如果我应该有一个更新的版本,它已经消失了 - 我需要设置一个环境变量吗?2)如果我需要你

python sqlite

3
推荐指数
1
解决办法
9367
查看次数

如何释放与SWIG一起返回的malloc'ed char*

我正在使用SWIG,我的函数返回一个char *malloc'ed.SWIG回归PyString_FromStringAndSize(my-char-str, len).

有没有办法在my-char-str不编辑C包装器代码的情况下释放它?

c python swig

3
推荐指数
1
解决办法
905
查看次数

Python 通过 ref 调用 使用 ctypes 按值调用

我正在尝试编写一个程序来向 A-level 学生说明使用 Python 进行引用调用和按值调用之间的区别。我成功地将可变对象作为变量传递给函数,但发现我也可以使用 ctypes 库执行相同的操作。

我不太明白它是如何工作的,因为byref()ctype 库中有一个函数,但它在我的示例中不起作用。然而,通过调用一个没有byref()它的函数确实有效!

我的工作代码:

"""
Program to illustrate call by ref
"""

from  ctypes import *  #allows call by ref

test = c_int(56)  #Python call by reference eg address
t = 67            #Python call by value eg copy


#expects a ctypes argument
def byRefExample(x):
    x.value= x.value + 2
    

#expects a normal Python variable
def byValueExample(x):
    x = x + 2
         

if __name__ == "__main__":

    print "Before call test is",test …
Run Code Online (Sandbox Code Playgroud)

python ctypes

3
推荐指数
1
解决办法
4126
查看次数

为什么这个土耳其字符在我小写时会被破坏?

我试图将包含土耳其语字符的单词转换为小写.

从utf-8编码的文件中读取单词:

with open(filepath,'r', encoding='utf8') as f:
            text=f.read().lower()
Run Code Online (Sandbox Code Playgroud)

当我尝试转换为小写时,土耳其语字符gets被破坏.但是,当我尝试转换为大写时,它工作正常.

这是示例代码:

str = '??birli?i'
print(str)
print(str.lower())
Run Code Online (Sandbox Code Playgroud)

以下是它在损坏时的外观:

这就是它被破坏时的样子

这里发生了什么?

一些可能有用的信息:

  • 我正在使用Windows 10 cmd提示符
  • Python版本3.6.0
  • chcp设置为65001

python turkish utf-8 case-sensitive character-encoding

3
推荐指数
1
解决办法
640
查看次数

将俄语符号写入 csv 时出现 Unicode 错误

我想将西里尔字母写入 csv 文件,但出现 unicode 编码错误。英文符号效果完美。我正在使用 Python 3.6.2。

\n\n
\n

UnicodeEncodeError: \'ascii\' 编解码器无法对位置\n 1-6 中的字符进行编码:序数不在范围内 (128)

\n
\n\n
import csv\n\n\nwith open("test.csv", \'w\') as csvfile:\n    csvfile = csv.writer(csvfile, delimiter=\',\', quotechar=\'|\', quoting=csv.QUOTE_MINIMAL)\n    hello = \'\xd0\xbf\xd1\x80\xd0\xb8\xd0\xb2\xd0\xb5\xd1\x82, \xd0\xbc\xd0\xb8\xd1\x80!\'\n    csvfile.writerow([hello])\n
Run Code Online (Sandbox Code Playgroud)\n

python csv unicode python-3.x

3
推荐指数
1
解决办法
4103
查看次数

如何合并字典列表

如何在 Python 中合并字典列表?我有两组数据:

a = [{'date':'1/1/2019'},{'date':'1/1/2020'},{'date':'1/1/2021'}]
b = [{'value':'2'},{'value':'5'},{'value':'6'}]
Run Code Online (Sandbox Code Playgroud)

如何将其合并到以下结果中?

[{'date':'1/1/2019','value':'2'},
 {'date':'1/1/2020','value':'5'},
 {'date':'1/1/2021','value':'6'}]
Run Code Online (Sandbox Code Playgroud)

python

3
推荐指数
2
解决办法
206
查看次数