存档

文章标签 ‘新特性’

Python备份Mysql脚本

2009年1月2日 没有评论

这个脚本是基于Python2.x的,是最初学的时候在网上Down的代码,贴出来给大家研究下!

#!/usr/bin/python
import os
import time
import ftplib
import traceback
#config vars
systempathchr="/" #路径分割符,*nix用"/" win32用"\\"
dbuser="root" #数据库用户名
dbpwd="dbpwd" #数据库密码
dbnamelist=["dbone","dbtwo","dbthree"] #需要备份那些数据库
workdir="/path/to/backup/" #本地备份文件夹
errlogfile="databack.log" #错误日志名
ftp_addr="192.168.0.2" #ftp地址
ftp_port="2102" #ftp端口
ftp_user="databack" #ftp用户名
ftp_pwd="backpwd" #ftp密码
ftp_path="/" #存放到ftp路径
ftpqueue=[]

没有仔细看,不过下面这两句,推荐看看os.path模块里面的函数,可能就不用针对linux和win分别设定不同的分隔符了 引用
#config vars
systempathchr=”/” #路径分割符,*nix用”/” win32用”\\”
看到代码里面是用在得到文件名的,可以试试os.path.basename或者os.path.split了

import os.path
>>>os.path.basename("c:\\test\\aa.txt")
'aa.txt'
>>> os.path.split("c:\\test\\aa.txt")
('c:\\test', 'aa.txt')
>>>os.path.split("c:\\test\\aa.txt")[-1]
'aa.txt'
>>>; os.path.basename("/home/test/aa.txt")
'aa.txt'
>>>os.path.split("/home/test/aa.txt")
('/home/test', 'aa.txt')
>>>os.path.basename("/home/test/aa.txt")
'aa.txt'

def ftpstor():
#login
bufsize=1024
ftp=ftplib.FTP()
try:
ftp.connect(ftp_addr,ftp_port)
ftp.login(ftp_user,ftp_pwd)
ftp.cwd(ftp_path)
for filepath in ftpqueue:
#open file for input as binary
f=open(filepath,"rb")
#store file as binary
print getfilename(filepath)
ftp.storbinary("STOR "+getfilename(filepath),f,bufsize)
f.close()
ftp.quit()
except:
path=os.path.join(workdir,errlogfile)
traceback.print_exc(file=open(path,"a"))

def dumpdb(dbname):
global ftpqueue
timeformat="%Y%m%d"
sqlvalformat="mysqldump -u%s -p\"%s\" \"%s\" >\"%s\""
tarvalformat="tar --directory=\"%s\" -zcf \"%s\" \"%s\""
nowdate=time.strftime(timeformat)
dumpfile=os.path.join(workdir,dbname+".dump")
zipfile=os.path.join(workdir,dbname+nowdate+".tar.gz")
sqlval=sqlvalformat % (dbuser,dbpwd,dbname,dumpfile)
result=os.system(sqlval)
tarval=tarvalformat % (workdir,zipfile,dbname+".dump")
result=os.system(tarval)
os.remove(dumpfile)
ftpqueue.append(zipfile)
def getfilename(path):
pt=path.rfind(systempathchr)
return path[pt+1:]
def main():
for dbname in dbnamelist:
dumpdb(dbname)
ftpstor()
main()

Python 3.0的新特性

2009年1月2日 没有评论

呵呵,用了2.5学习很久了。3.0出来了,就安装了个体验一下。发现3.0和2.x有很多不同,我把我发现的给大家分享出来。欢迎大家交流。

First:编码,默认使用UTF-8编码,中文支持变好了,高兴ing,

Second:语法,1)去除了<>,全部改用!=。 

                                2)去除“,全部改用repr() 

                                3)关键词加入as和with。 

                                4)整型除法返回浮点数,要得到整型结果,请使用//。 

                                5)加入nonlocal语句。使用noclocal x可以直接指派外围(非全局)变量。 

                                6)去除print语句,加入print()函数实现相同的功能。同样的还有exec语句,已经改为exec()函数。

                                7)去除元组参数解包。不能def(a, (b, c)):pass这样定义函数了。 

                                8)新式的8进制字面量,相应地修改了oct()函数。 

                                9)增加了2进制字面量和bin()函数: 

                               10)扩展的可迭代解包。在Py3.0里,a, b, *rest = seq 和   *rest, a = seq都是合法的。只要求两点:rest                                是list对象和seq是可迭代的。 

                              11)新的super(),可以不再给super()传参数。

Python中Random函数的用法

2009年1月2日 没有评论

Python中random函数的用法

随机整数:

>>> import random

>>> random.randint(0,99)

21

 

随机选取0到100间的偶数:

>>> import random

>>> random.randrange(0, 101, 2)

42

 

随机浮点数:

>>> import random

>>> random.random() 

0.85415370477785668

>>> random.uniform(1, 10)

5.4221167969800881

 

随机字符:

>>> import random

>>> random.choice(‘abcdefg&#%^*f’)

‘d’

 

多个字符中选取特定数量的字符:

>>> import random

random.sample(‘abcdefghij’,3) 

[‘a’, ‘d’, ‘b’]

 

多个字符中选取特定数量的字符组成新字符串:

>>> import random

>>> import string

>>> string.join(random.sample([‘a’,’b’,’c’,’d’,’e’,’f’,’g’,’h’,’i’,’j’], 3)).r

eplace(” “,””)

‘fih’

 

随机选取字符串:

>>> import random

>>> random.choice ( [‘apple’, ‘pear’, ‘peach’, ‘orange’, ‘lemon’] )

‘lemon’

 

洗牌:

>>> import random

>>> items = [1, 2, 3, 4, 5, 6]

>>> random.shuffle(items)

>>> items

[3, 2, 5, 6, 4, 1]

 

random的函数还有很多,大家可以参考Python手册!

Python3.0发布

2009年1月1日 没有评论

python3.0

从2007年8月,经过5个Alpha,3个Beta,3个RC版。Python 3.0(a.k.a. “Python 3000″ or “Py3k”)终于发布!注意这个版本与2.X的语法有很多不兼容的地方。

不过有一个“2To3”的转换器,以便开发人员能够将Py2.x的代码转到Py3.0上来。

http://svn.python.org/view/sandbox/trunk/2to3/
Guido van Rossum写的3.0新特性:
http://docs.python.org/dev/3.0/whatsnew/3.0.html
Change Log :
http://python.org/download/releases/3.0/NEWS.txt

新版本的Python发布,而且好多函数不兼容老版本,无形中就对这种从2.5开始学,还没学好的人提出更大的挑战了!