Tag Archives: Python

linux和windows或者mac之间共享文件

在windows之间共享文件,比较简单,设一下文件的共享属性就可以了,远程就可以使用

\xxx.xxx.xxx.xxx

来访问了。

但是如果linux或者mac想要访问windows的设了共享属性的文件夹,则不能用这种方法,那是属于windows自己内部的协议,不是一个公开,大家支持的协议。

继续阅读

python UnicodeDecodeError: ‘gbk’ codec can’t decode bytes in position

python UnicodeDecodeError: ‘gbk’ codec can’t decode bytes in position

如果你的源码中只含有ANSI字符,如全是英文,那么编辑和保存源码时候,不需要额外的任何修饰和说明,但是如果你如果你还有中文的时候,那么你必须指定这个源码文件的编码格式。否则在你保存的时候会弹出错误,提示添加编码说明符,我使用python自带的IDE – IDLE。

继续阅读

wxpython禁止弹出错误框

wxpython开发的程序在遇到错误的时候会自动弹出一个对话框,并提示在什么地方,出了什么错误。这个对话框本来对开发人员来说是非常方便,但是如果我们的程序发布给客户,弹出这个东西,我想很多客户会抱怨。

那么怎么禁止这个框呢?

继续阅读

python调用c

python一个非常的大的优点就是开发效率高,非常不好的缺点就是执行效率低;然而c语言有个则刚好相反。还有一点python的对源码的保护做不到,即使你用py2exe,pyinstaller这样的方法也是很容易被反编译出来。但是c写的代码反编译的难度就极大地增加。所以如果你写的代码里面如果包含了一些敏感的东西,那么你可以把这段代码使用c来写。

那么我们是不是可以结合起来使用呢?

答案是完全可以,用c来写一个动态库/共享库,然后在python中调用。

python 的解释器本身就是用c写的,所以调用c是很方便的,调用的方法不止一种,我们这里介绍使用ctypes这种方式。

我们会写一个测试代码来演示怎么在python中调用c函数,包括python传整型和字符串参数给c库,c库中返回整型和字符串。这个测试将在windows xp平台+python2.7实施。

接下来我们把要做的事情分成2个阶段,用c编写一个动态库,在python中调用这个动态库。

c编写一个动态库

使用vc6创建一个空的win32动态库,添加2个文件

testcdll.c

tsetcdll.def

testcdll.c的内容如下:

#include <stdlib.h>
#include <string.h>


int add( int a, int b )
{
	return a + b;
}


char* pStr = 0;
int nMax = 128;
char* makestring( )
{
	pStr = ( char* )malloc(nMax);
	memset( pStr, 0, nMax );
	strcpy( pStr, "test is test string" );
	
	return pStr;
}

void delstring( void )
{
	if ( 0 != pStr )
	{
		free( pStr );
		pStr = 0;
	}
}

char* catstring( char* pinput )
{
	if ( 0 == pinput )
	{
		return 0;
	}
	if ( 0 == pStr )
	{
		pStr = ( char* )malloc(nMax);
	}
	memset( pStr, 0, nMax );
	strcpy( pStr, "test is test string--" );
	strcat( pStr, pinput );
	return pStr;
}

继续阅读

配置python的vim开发环境

Configuration for setting up Vim to work with PythonStyleGuide

Here’s a complete vimrc file that you can use. To call it add these lines to your ~/.vimrc:

if !exists("autocommands_loaded")
  let autocommands_loaded = 1
  autocmd BufRead,BufNewFile,FileReadPost *.py source ~/.vim/python
endif

" This beauty remembers where you were the last time you edited the file, and returns to the same position.
au BufReadPost * if line("'"") > 0|if line("'"") <= line("$")|exe("norm '"")|else|exe "norm $"|endif|endif

继续阅读