【Python3基础 file seek 将文件的指针恢复到初始位置】教程文章相关的互联网学习教程文章

Python 3 tell()在追加读取模式下与文件指针不同步【代码】

与Python 2(2.7.15)不同,当打开二进制文件进行追加和读取时,我在Python 3(3.6.5)中看到了奇怪的f.tell()行为.如果当前搜索位置不在文件末尾时写入n个字节,则以下事情似乎按预期发生: >文件指针移动到文件末尾.>写入n个字节.> n被添加到文件指针中. 但是,似乎f.tell()没有注意到步骤1,因此f.tell()返回的值与实际文件指针相比偏移了恒定的负数.我在Windows和Linux上都看到了相同的内容. 这里有一些Python 3代码演示了这个问题:imp...

如何创建指向数组的Python ctypes指针【代码】

我需要学习如何通过Python ctypes处理下面C语言中的char **.我通过使用create_string_buffer()调用其他只需要单指针的方法,但是这个方法需要一个指向指针数组的指针.ladybugConvertToMultipleBGRU32(LadybugContext context,const LadybugImage * pImage,unsigned char** arpDestBuffers,LadybugImageInfo * pImageInfo )如何在ctypes中创建指向六个create_string_buffer(7963648)缓冲区的数组的指针,以传递给...

SWIG,Python和指针【代码】

我正在尝试包装一个源API不可用的C API(静态库).使用API??的首要任务之一是设置环境结构.env_t * my_env = NULL; result = env_setup(&my_env);声明error_code env_setup(env_t ** env);考虑到env结构的布局是隐藏的,甚至可以在SWIG中制作这种类型的指针(env_t **)吗?解决方法:您可能需要对类型图进行一些操作.%typemap(in) env_t ** (env_t *temp) %{temp = env_alloc();PyObject *iter = PyObject_GetIter($input);for (PyObjec...

python – 需要ctypes char *指针【代码】

我有一个C函数返回字符串(char *),让我们称之为foo().在python中我想调用它并使用它的返回值,当我完成后,我想调用另一个C函数来释放返回的字符串foo. 如何获得指针和字符串本身?如果我喜欢这样:fooFunc = foolib.foo fooFunc.restype = c_char_p r = fooFunc()然后我得到字符串,但不是指针.如果我在没有指定restype的情况下这样做,我得到一个似乎是正确地址的int,但每当我尝试使用c_char_p(< address>)将其强制转换为sting时,它就...

python – 将Cython融合类型转换为C指针【代码】

这是一个关于从Cython融合类型转换为C类型的一般问题,我将用一个最小的例子来描述.考虑表面的C函数模板:template <typename T> void scale_impl(const T * x, T * y, const T a, const size_t N) {for (size_t n = 0; n < N; ++n) {y[n] = a*x[n];} }我希望能够在任何类型和形状的任何numpy ndarray上调用此函数.使用Cython,我们首先声明函数模板:cdef extern:void scale_impl[T](const T * x, T * y, const T a, const size_t N...

Python对象到C指针问题【代码】

这是我的第一篇文章 :).我可以将python扩展对象转换为C指针,但我有一个问题.首先,我将向您展示我的代码,然后我将解释这个问题. 这是我的班级:#include <boost/python.hpp>using namespace boost::python;class Base {public:virtual const char* HelloWorld() = 0;};class BaseWrapper : public Base, public wrapper<BaseWrapper> {public:virtual const char* HelloWorld(){if (override f = this->get_override("HelloWorld")...

python – Cython函数指针和异常【代码】

我正在尝试使用cython包装现有的C库.该库使用回调,我想重定向以执行python代码.让我们说标题中的对应行如下:typedef RETCODE (*FUNC_EVAL)(int a, int b, void* func_data);其中返回码用于表示错误. API到创建一个对应的C结构如下:RETCODE func_create(Func** fstar,FUNC_EVAL func_eval,void* func_data);我添加了一个cython标头/实现文件.标题包含typedef:ctypedef RETCODE (*FUNC_EVAL)(int a,int b, void* func_data)该实现...

如何在Python中为包装的C函数传递指向数组的指针【代码】

我是C / Python混合语言编程的新手,对Python / C API不太了解.我刚开始使用Boost.Python为Python包装一个C库.我被困在包装一个函数,该函数将指向数组的指针作为参数.以下(第二个ctor)是它在C中的原型.class AAF{AAF(AAF_TYPE t);AAF(double v0, const double * t1, const unsigned * t2, unsigned T);~AAF(); }我是通过在boost :: python中这样包装它来做的吗?class_<AAF>("AAF", init<AAF_TYPE>()).def(init<double, const doubl...

Python双指针【代码】

我正在尝试从指向float数组的指针获取值,但它在python中返回为c_void_p C代码double v; const void *data; pa_stream_peek(s, &data, &length); v = ((const float*) data)[length / sizeof(float) -1];Python到目前为止import ctypes null_ptr = ctypes.c_void_p() pa_stream_peek(stream, null_ptr, ctypes.c_ulong(length)) 问题是null_ptr有一个int值(内存地址?)但是没有办法读取数组?!解决方法:我的ctypes生锈了,但我相...

在Python中取消引用FFI指针以获取底层数组【代码】

我有一个用Rust编写的C FFI,名为src / lib.rs,如下所示:// compile with $cargo buildextern crate libc; use self::libc::{size_t, int32_t};use std::cmp::min; use std::slice;#[no_mangle] pub extern "C" fn rle_new(values_data: *const int32_t, values_length: size_t) -> *mut Rle {let values = unsafe { slice::from_raw_parts(values_data, values_length as usize).to_vec() };return Box::into_raw(Box::new(Rle::n...

使用Python Ctypes将struct指针传递给DLL函数【代码】

我试图使用Python ctypes访问DLL文件中的函数.提供的功能描述如下.Prototype: Picam_ConnectDemoCamera( PicamModel model,const pichar* serial_number,PicamCameraID* id )Description: Virtually connects the software-simulated 'model' with 'serial_number' and returns the camera id in `_id_` Notes: `_id_` is optional and can be null该函数引用DLL中定义的一些变量类型.接下来描述这些变量PicamModel Type: enum Des...

python – 如何保存包含指针的ctypes对象

我使用第三方库,经过大量计算后返回一个包含指针的ctypes对象. 如何保存ctypes对象以及指针指向以供以后使用?我试过了 > scipy.io.savemat => TypeError:无法将对象转换为数组> cPickle =>包含指针的ctypes对象无法进行pickle解决方法:Python无法自动为您执行此操作: 您必须构建代码以自己选择所有需要的数据,将它们放在合适的Python数据结构中(或者只是将数据添加到一个唯一的字节字符串中,您将知道每个元素的偏移位置) – 然后...

Python相当于指针【代码】

在python中,一切都通过引用工作:>>> a = 1 >>> d = {'a':a} >>> d['a'] 1 >>> a = 2 >>> d['a'] 1我想要这样的东西>>> a = 1 >>> d = {'a':magical pointer to a} >>> d['a'] 1 >>> a = 2 >>> d['a'] 2你会用什么代替魔法指针来让python输出我想要的东西. 我将不胜感激一般的解决方案(不仅仅是上面的字典示例与自变量,但适用于其他集合和类/实例变量)解决方法:可变数据结构怎么样?>>> a = mutable_structure(1) >>> d = {'a':a} ...

python – 带有C指针的Pickle Cython类【代码】

我正在尝试为包含C指针的cython类编写一个__reduce __()方法,但到目前为止,我找到了关于最佳方法的信息.当使用numpy数组作为成员数据时,有很多关于如何正确编写__reduce __()方法的例子.我想远离Numpy数组,因为它们似乎总是存储为python对象,并且需要调用python API.我来自C背景,所以我很乐意使用对malloc()和free()的调用手动处理内存,并且我试图将python交互保持在绝对最小值. 但是我遇到了一个问题.我需要在我正在创建的类中使用...

Python -- seek定位文件指针位置 错误 io.UnsupportedOperation: can't do nonzero cur-relative seeks错误【代码】【图】

f=open("E:/test/悯农.txt",r) str=f.read(17) print("读取的数据是:",str) position=f.tell() print("当前位置:",position)f.seek(4,0) #从头开始,偏移4个字节 position=f.tell() print("当前位置:",position)f.seek(4,1) #从当前位置开始,偏移4个字节 position=f.tell() print("当前位置:",position)f.seek(-4,2) position=f.tell() print("当前位置:",position)f.close() 总结: seek中whence参数的值: 0:open函...

PYTHON3 - 相关标签