您的位置:首页 > 编程语言 > Python开发

运维的我要学开发--Python(6)

2014-05-08 22:42 381 查看
本文均来自Python Cookbook,本博文励志将Cookbook中的string部位,文件,面向对象编程部分完成,本系列博文陆续还会介绍flask框架,每篇博文都以一个个小例子展示。
#-*- coding: utf-8 -*-
'''
windows下修改文件属性
'''
import win32con,win32api,os
#创建一个文件,并展示如何操作它
thefile = 'test'
f = open('test','w')
f.close()
#设置成隐藏文件...
win32api.SetFileAttributes(thefile,win32con.FILE_ATTRIBUTE_HIDDEN)
#设置成只读文件
win32api.SetFileAttributes(thefile,win32con.FILE_ATTRIBUTE_READONLY)
#设置成普通文件
win32api.SetFileAttributes(thefile,win32con.FILE_ATTRIBUTE_NORMAL)
#最后删除掉该文件
os.remove(thefile)
'''
对象的拷贝
对象的引用(对一个对象的赋值,作为参数传递,
作为结果返回,Python通常都是指向原
'''
#什么是对象引用
a = [1,2,3,4]
b = a #b引用了a
b.append(5)
print a,b
#结果:[1, 2, 3, 4, 5] [1, 2, 3, 4, 5]
import copy
listobject=[1,2,3,4]
#第一种对象拷贝方式(但是不适用于其属性或者内容中仍然是一个对象的情况
new_list =  copy.copy(listobject)
new_list.append(5)
print new_list,listobject
#必须使用deepcpoy的情况
listobject=[[1,2,3],[5,6,7]]
new_list =  copy.copy(listobject)
new_list[1].append(1000)
print new_list,listobject
#结果 [[1, 2, 3], [5, 6, 7, 1000]] [[1, 2, 3], [5, 6, 7, 1000]]
#第二种对象拷贝方式.递归拷贝对象
new_list =  copy.deepcopy(listobject)
'''
判断一个列表中的某个元素是否存在,存在则返回
'''
#方案一
def list_get(L,i,v=None):
if -len(L) <= i < len(L):return L[i]
else:return v
#方案二
def list_get_egfp(L,i,v=None):
try:return L[i]
except IndexError:return v
#除非传入的索引值大多数是有效的,否则方案二要比方案一慢多了
'''
多维列表的创建
'''
#得到1*5的列表
alist = [0]*5
#得到3*5的列表
multi = [[0]*5]*3
print multi
#结果[[0, 0, 0, 0, 0], [0, 0, 0, 0, 0], [0, 0, 0, 0, 0]]
multi[0][0]='oops'
print multi
#存在bug
#[['oops', 0, 0, 0, 0], ['oops', 0, 0, 0, 0], ['oops', 0, 0, 0, 0]]
#序列乘以数字得到的是包含多个引用原始内容的子项
#正确的多维序列的创建,使用列表推导没有任何隐式的引用
multi = [[0 for col in range(5)] for row in range(5)]
'''
展开嵌套序列
'''
def list_or_tuple(x):
return isinstance(x,(list,tuple))
def flatten(sequence,to_expand=list_or_tuple):
for item in sequence:
if to_expand(item):
for subitem in flatten(item,to_expand):
yield subitem
else:
yield item
'''
二维阵列变换
'''
arr = [[1,2,3],[4,5,6],[7,8,9]]
#方法一
print [[r[col] for r in arr] for col in range(len(arr[0]))]
#方法二
print map(list,zip(*arr))
#结果[[1, 4, 7], [2, 5, 8], [3, 6, 9]]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python flask fabric