一、数据库的使用
1、数据库中的字段使用的utf8格式编码,但是读取出来却是问号。这个问题的解决可以通过在查询的时候指定编码方式来解决,只要执行sql语句:Query_Execsql(pdb, "SET NAMES 'utf8'");
注意,这个需要在连接后马上进行。并且,在其他的操作中,会一直使用这种编码。除非再次更改。
2、fetchone():返回一条记录。fetchall():返回所有的记录。
3、可以使用一个简单的方法获取所有的记录:
cur.execute(sql)
for tel, name, pwd in cur:
print tel, name, pwd
二、FTP的使用
Python的标准模块ftplib就可以支持FTP。
几个函数:
FTP(host= '' , user= '' , passwd= '' , acct= '' , timeout=_GLOBAL_DEFAULT_TIMEOUT):如果参数中有user,则Connect();如果同时也有user,则login()。如果没用这些参数,后要自己调用connect和login。
connect(self, host='', port=0, timeout=-999):如果端口不是标准端口,则要手动调用connect。
login(user = '', passwd = '', acct = ''):登陆。
pwd():获得当前的工作路径。
cwd(path):更改当前的工作路径。
dir(path,cb):显示目录中的内容。cb为文件的处理函数。会传递给retrlines。这个函数可以获取一个目录下的所有的内容。
retrlines(self, cmd, callback = None):下载文本文件。cmd的形式为“RETR FILENAME”,callback是一个函数,要处理文本文件的每一个行。这里一个问题,如果直接用file的write方法,则会丢失换行符。而又没有writeline函数。
retrbinary(self, cmd, callback, blocksize=8192, rest=None):下载二进制文件,cmd的形式为“RETR FILENAME”,callback是一个函数,要处理文本文件的每一个块。默认大小事8k,但是可以更改。
storlines(self, cmd, fp, callback=None):上传文本文件。cmd的形式为“STOR FILENAME”。fp是一个文件对象,必须有readline方法。callback:每传送一行,就会调用这个函数。
storbinary(self, cmd, fp, blocksize=8192, callback=None, rest=None): 上传二进制文件。cmd的形式为“STOR FILENAME”。fp是一个文件对象,必须有read(num_bytes)方法。默认大小事8k,但是可以更改。
quit():退出。
三、字符编码的使用
encode是将Unicode转化为str,decode是将字符串转化为Unicode。所以,一个字符串要转化为另一种格式可以:
s = ‘中文’ s.decode(fromcodec).encode(tocodec) 复制代码
也可以直接使用:s.encode(tocodec)。这个时候,相当于默认调用了decode,并且使用的是默认的编码方式。
四、源码安全
- Python代码如果直接发布,可能会暴露源码。
- 一个方法是利用c扩展Python,来代替核心模块。
- 另一个折中的方法就是对源码进行编译,生成pyc或者pyo文件。这些事字节码文件。可能会被反编译。所以,可能需要研究一下Python的pyo生成和加载方式,来生成更安全的Python字节码。网上说可以修改Python源码的opcode。没有研究过。
- 命令:python -m compileall。
- 也可以在Python中使用:
import compileall compileall._dir('Lib/', force=True) # Perform same compilation, excluding files in .svn directories. import re compileall._dir('Lib/', rx=re.compile('/[.]svn'), force=True)
作者:zhulin1028
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。