python备忘

python中有许多提高效率的方法和技巧,总结下来

python中不同对象的转换

int(x [,base ])         将x转换为一个整数  
long(x [,base ])        将x转换为一个长整数  
float(x )               将x转换到一个浮点数  
complex(real [,imag ])  创建一个复数  
str(x )                 将对象 x 转换为字符串  
repr(x )                将对象 x 转换为表达式字符串  
eval(str )              用来计算在字符串中的有效Python表达式,并返回一个对象  
tuple(s )               将序列 s 转换为一个元组  
list(s )                将序列 s 转换为一个列表  
chr(x )                 将一个整数转换为一个字符  
unichr(x )              将一个整数转换为Unicode字符  
ord(x )                 将一个字符转换为它的整数值  
hex(x )                 将一个整数转换为一个十六进制字符串  
oct(x )                 将一个整数转换为一个八进制字符串  
b = '%x' % a            使用hex转换一个整数会出现0x头和L尾,而这么写可以直接得到数据格式化的字符串     

python中的日期处理

得到当前时间的格式化字符串 datetime.datetime.now().strftime('%Y-%m-%d %H:%M:%S');
从字符串转为日期 time.strptime('2006-1-2', "%Y-%m-%d")
计算时间差 starttime = datetime.datetime.now()
endtime = datetime.datetime.now()
print (endtime - starttime).seconds
计算时间加减时间差之后的时间 d1 = datetime.datetime.now()
d3 = d1 + datetime.timedelta(days =10)

python中的字节处理

os.urandom(length)  随机生成指定长度的字节数 


python中的字符串处理

trim,字符是可以定制的 
s.strip() s.lstrip() s.rstrip()
' ab ,'.strip(',')
比较字符串要用,不能用==
cmp(sStr1,sStr2)
查找字符串,两者区别在于找不到时find返回-1,而index就异常了
str1.index(str2)
str1.find(str2)
字符串替换
a.replace(str1, str2)
字符串分割
str1.split(str2)
索引
取子串 s[0:5]
字符串翻转 a[::-1]
连接列表为数组
a = ['a','b','c','d']
''.join(a)
字符串拼接
astr = 'i love %s' % m
astr = "i love {python}".format(python=m)
astr = "i love %(python)s " % {'python':m}
"%.2f" % 50.4625
字符串大小写
str.upper() str.lower() str.capitalize() str.istitle()

序列可以相乘或相加
"ab" * 10
['a', 'b'] + [1, 2]
指针拷贝 y = x
值拷贝 y = x[:]

python中的文件处理

对文件名的操作

os.path.split(r"c:\python\hello.py") --> ("c:\\python", "hello.py")       分离文件名
os.path.basename(r"r:\python\hello.py") --> "hello.py"                    获取文件名
os.path.splitext(r"c:\python\hello.py") --> ("c:\\python\\hello", ".py")  分离扩展名
os.path.dirname(r"c:\python\hello.py") --> "c:\\python"                   获取路径名
对文件的操作
os.mknod("test.txt")                   touch一个文件
shutil.copyfile("oldfile","newfile")   复制文件
shutil.move("oldpos","newpos")         剪切文件
os.remove("file")                      删除文件
os.path.isfile(file)                   判断是否是文件
os.rename("oldname","newname")         重命名
os.chmod(file)                         修改文件权限
os.stat(file)                          获取文件属性
os.path.getsize(filename)              获取文件大小
os.path.walk()                         获得目录下所有文件
os.path.join(path, name)               连接目录与文件
os.path.isdir(file)                    判断是否是目录
os.path.islink(file)                   判断是否链接文件
os.path.isabs("file")                  判断是否绝对路径
os.path.exists(file)                   判断路径是否存在

fp = open("test.txt",w)
fp.read([size])
fp.readline([size])
fp.readlines([size])
fp.write(str)
fp.writelines(seq)
fp.flush()
fp.seek(offset[,whence])
fp.truncate([size])
fp.next()

对目录的操作
os.mkdir("file")                       创建目录
os.makedirs(r"c:\python \test")        创建多级目录
os.rmdir("dir")                        删除目录
os.removedirs(r"c:\python")           删除多个目录
shutil.rmtree("dir")                   强制删除
os.getcwd()                            得到当前工作目录
os.listdir()                           得到指定目录下的所有文件和目录
os.chdir("path")                       改变当前工作目录
shutil.copytree("olddir","newdir")     复制目录,且newdir必须不存在


python中网络处理

urllib.quote                           做urlencode编码(这个名字跟下面的urlencode取得蛮坑爹的)
urllib.unquote                         做urldecode解码
urllib.urlencode                       将python的dict对象转化为form表单字符串的形式


列表的方法(tuple无方法!)

append, count, extend, index, insert, pop, remove, reverse, sort, sorted
lst.sort(key=len,reverse=True)

(x, y, z) = ('a', 'b', 'c')
(MONDAY, TUESDAY, WEDNESDAY, THURSDAY, FRIDAY, SATURDAY, SUNDAY) = range(7)


Python内置的几个重要操作zip, map, reduce, filter

zip

a = [1,2,3]
b = [4,5,6]
zipped = zip(a,b)#[(1, 4), (2, 5), (3, 6)]
zip(*zipped)#[(1, 2, 3), (4, 5, 6)]
map,用function对iterable中的每个元素计算,并返回计算结果列表,这里的iterable仅仅是function的参数。lambda

map(function, iterable...)
a = [1, 2, 3, 4, 5]
b = [2, 2, 9, 0, 9]
map(max, a, b)#求两数组最大值
map(lambda pair: max(pair), zip(a, b))#求两数组最大值的另一种方式

reduce,function每次只传入两个数据,第一次会将iterable中第1,2个数据传入;第二次以后都以上次计算结果作为参数1,iterable的下一个数据作为参数2

reduce(function, iterable...)
reduce(lambda x,y:x*y,range(1,3),5)#1*2*5

filter,用function对iterable做计算,用结果的boolean值来判断是否需要过滤iterable中的数据

filter(function, iterable)
filter(lambda x : not x%2,range(10))

可以同过滤器表达式比较

[mapping-expression for element in source-list if filter-expression]
";".join(["%s=%s" % (k, v) for k, v in params.items()])
methodList = [method for method in dir(object) if callable(getattr(object, method))]
<span style="font-family:Arial, Helvetica, sans-serif;"><span style="white-space: normal;">
</span></span>


python反射的核心getattr(),这是一个神级方法,可以作用于任何对象,就像java中反射以Class为核心,而c#中以Type为核心一样

getattr(li, "append")("Moe")


如果要删除python字典,有两个方法,即内置方法 del和字典的方法pop。

其中del这个方法有陷阱,需要注意

binfo = {'name':'jay','age':20,'python':'haha'}
x = binfo['name']
del x
print binfo
del binfo['name']
print binfo

上面一段程序,输出是:

{'python': 'haha', 'age': 20, 'name': 'jay'}
{'python': 'haha', 'age': 20}
可以看出来del并非直接是根据value来删除字典中元素的,因为单纯给他一个value是不能找到要删哪个元素的,而del binfo['name']才给他了足够多的元素,一个是这个字典对象,另一个是该字典的key。

链式操作符

x=5
x < 10 < x*7 < 100
(1 and [a] or [b])[0]


python中一些库安装

easy_install的安装:https://pypi.python.org/pypi/setuptools#downloads,下载之后直接执行就好了,目的是在python目录下生成一个scripts文件夹,从而可以直接调用easy_install这个程序。

在调用过程中可能出错如下:UnicodeDecodeError: 'ascii' codec can't decode byte 0xb0 in position 1: ordinal not in range(128) 原因是注册表可能为gbk格式。

解决办法是:到python目录下的lib中找到mimetypes.py

default_encoding = sys.getdefaultencoding()
改为
if sys.getdefaultencoding() != 'gbk':
     reload(sys)
     sys.setdefaultencoding('gbk')
default_encoding = sys.getdefaultencoding()

pip安装:到这里下载 https://raw.githubusercontent.com/pypa/pip/master/contrib/get-pip.py,然后直接执行就好了

python未注册,报错如下:python version 2.7 required which was not found in the registry,原因是python没进注册表。

解决办法:新建程序regist.py,然后执行,则将python放入注册表

import sys
  
from _winreg import *
  
# tweak as necessary
version = sys.version[:3]
installpath = sys.prefix
  
regpath = "SOFTWARE\\Python\\Pythoncore\\%s\\" % (version)
installkey = "InstallPath"
pythonkey = "PythonPath"
pythonpath = "%s;%s\\Lib\\;%s\\DLLs\\" % (
    installpath, installpath, installpath
)
  
def RegisterPy():
    try:
        reg = OpenKey(HKEY_CURRENT_USER, regpath)
    except EnvironmentError as e:
        try:
            reg = CreateKey(HKEY_CURRENT_USER, regpath)
            SetValue(reg, installkey, REG_SZ, installpath)
            SetValue(reg, pythonkey, REG_SZ, pythonpath)
            CloseKey(reg)
        except:
            print "*** Unable to register!"
            return
        print "--- Python", version, "is now registered!"
        return
    if (QueryValue(reg, installkey) == installpath and
        QueryValue(reg, pythonkey) == pythonpath):
        CloseKey(reg)
        print "=== Python", version, "is already registered!"
        return
    CloseKey(reg)
    print "*** Unable to register!"
    print "*** You probably have another Python installation!"
    
if __name__ == "__main__":
    RegisterPy()

lxml的安装:lxml是解析xml和html的好工具,windows下安装lxml很简单,可以到这里https://pypi.python.org/pypi/lxml/2.3直接下载exe程序

linux下的lxml稍微麻烦点,如果是ubuntu,使用如下一堆命令,命令很简单,不解释。

apt-get update
apt-cache search lxml 
apt-cache show python-lxml
apt-get install python-lxml
pip同样可以安装

pip install lxml

pyquery的安装:下载源码http://pypi.python.org/pypi/pyquery,执行

python setup.py build
python setup.py install

twisted的安装:windows下载msi直接安装http://twistedmatrix.com/trac/wiki/Downloads

linux下可以如下几种方式

pip方式,首先要执行这个,把开发环境装好

apt-get install build-essential python-dev
接下来可以直接安装,它会顺带把依赖的zope装好

pip install Twisted==14.0
直接编译源码,先到https://pypi.python.org/找到合适的版本下载,然后执行
python setup.py build
python setup.py install

zope的安装:下载相应的zope https://pypi.python.org/pypi/zope.interface#download

chardet的安装:下载chardet源码 https://pypi.python.org/pypi/chardet#downloads,执行

python setup.py build
python setup.py install
mysql-python的安装:下载exe直接安装 https://pypi.python.org/pypi/MySQL-python/1.2.5

linux下用pip安装

pip install mysql-python==1.2.5
mysql有可能报如下错:ERROR 2002 (HY000): Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)-mysql.sock

导致该错误原因很多,在linux下的一个经典原因就是需要把连接的localhost换成127.0.0.1,号称这是通过localhost的tcp请求导致了unix socket错误。

其他一些错误原因可以参考这里:

http://blog.csdn.net/leisure512/article/details/5139104

http://chinacheng.iteye.com/blog/1100999


python的隐藏特性 https://pyzh.readthedocs.org/en/latest/python-hidden-features.html

                                 http://blog.csdn.net/zhzhl202/article/details/7524609
python的zip, map和lambda https://bradmontgomery.net/blog/2013/04/01/pythons-zip-map-and-lambda/
Python字符编码详解 http://www.cnblogs.com/huxi/archive/2010/12/05/1897271.html
python字符串操作-老王的博客:http://www.cnpythoner.com/wiki/string.html
dive into python: http://woodpecker.org.cn/diveintopython/index.html
python bit操作:http://wiki.python.org/moin/BitManipulation
python内置操作:http://www.cnblogs.com/flyingfish/archive/2007/05/16/748123.html
Python开发者应该知道的7个开发库 http://developer.51cto.com/art/201211/364737.htm
Python项目自动化部署最佳实践 http://www.the5fire.com/auto-deploy-tool-for-python-app.html
python时间 http://www.sharejs.com/codes/python/8664
http://www.crifan.com/python_re_sub_detailed_introduction/
http://www.coder4.com/archives/3711
http://www.cnblogs.com/moinmoin/archive/2011/02/28/bin_oct_int_hex.html

python简明教程 http://www.pythondoc.com/pythontutorial3/

如何学习python https://www.zhihu.com/question/20702054

理解 Python 语言中的 defaultdict http://kodango.com/understand-defaultdict-in-python

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
智慧校园的建设目标是通过数据整合、全面共享,实现校园内教学、科研、管理、服务流程的数字化、信息化、智能化和多媒体化,以提高资源利用率和管理效率,确保校园安全。 智慧校园的建设思路包括构建统一支撑平台、建立完善管理体系、大数据辅助决策和建设校园智慧环境。通过云架构的数据中心与智慧的学习、办公环境,实现日常教学活动、资源建设情况、学业水平情况的全面统计和分析,为决策提供辅助。此外,智慧校园还涵盖了多媒体教学、智慧录播、电子图书馆、VR教室等多种教学模式,以及校园网络、智慧班牌、校园广播等教务管理功能,旨在提升教学品质和管理水平。 智慧校园的详细方案设计进一步细化了教学、教务、安防和运维等多个方面的应用。例如,在智慧教学领域,通过多媒体教学、智慧录播、电子图书馆等技术,实现教学资源的共享和教学模式的创新。在智慧教务方面,校园网络、考场监控、智慧班牌等系统为校园管理提供了便捷和高效。智慧安防系统包括视频监控、一键报警、阳光厨房等,确保校园安全。智慧运维则通过综合管理平台、设备管理、能效管理和资产管理,实现校园设施的智能化管理。 智慧校园的优势和价值体现在个性化互动的智慧教学、协同高效的校园管理、无处不在的校园学习、全面感知的校园环境和轻松便捷的校园生活等方面。通过智慧校园的建设,可以促进教育资源的均衡化,提高教育质量和管理效率,同时保障校园安全和提升师生的学习体验。 总之,智慧校园解决方案通过整合现代信息技术,如云计算、大数据、物联网和人工智能,为教育行业带来了革命性的变革。它不仅提高了教育的质量和效率,还为师生创造了一个更加安全、便捷和富有智慧的学习与生活环境。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值