首页 > 代码库 > Python之路,day2

Python之路,day2

八、模块

标准库(自带)第三方库(需下载)

sys
sys.path 环境变量
sys.argv 参数

os
os.system(cmd) # 执行命令,不保存结果,0成功 非0失败
os.popen(cmd).read()  #执行命令,输出结果
os.mkdir(dir) # 创建目录

os.walk() 方法用于通过在目录树种游走输出在目录中的文件名,向上或者向下。
在Unix,Windows中有效。


import os
for root, dirs, files in os.walk(".", topdown=False):
    for name in files:
        print(os.path.join(root, name))
    for name in dirs:
        print(os.path.join(root, name))

 

九、pyc

pyc 预编译后的字节码文件,完成度低,与Python文件的时间作比较进行更新

十、python数据类型

Python2 整型(根据机器位数确定取值范围,32位机器取值范围-2**31~2**31-1,64位机器取值范围-2**63~2**63-1)、长整型
Python3 没有长整型
布尔值 真或假

十一、数据运算

+ - * /
% 取模-返回除法余数
** 幂
// 取商的整数部分

计算机中能表示的最小单位,是一个二进制位
计算机中能存储的最小单位,是一个二进制位(bit)

8bit = byte(字节)
1024byte = 1kbyte
1024kbyte = 1mbyte
1024mb = 1gb
1024gb = 1T

&与
|或
^异或 相同为0 不同为1
~按位取反 取反后-256
>>右移n位 x / 2**n
<<左移n位 x * 2**n

三元运算
a,b,c = 1,3,5
d = a if a > b else c

 

十六进制(后缀BH前缀0x) 四位 二进制

 

十二、byte

bytes类型--二进制数据类型

python2 认为bytes类型与字符串类型一样
python3 文本总是unicode,由str类型表示
字符串可以编码成字节包,而字节包可以解码成字符串。
python3 数据传输必须转换成二进制(socket)

字符串-encode-字节
字节-decode-字符串

技术分享

 

十三、列表与元祖

names[1:3]   # 切片
names[-1:-3] # 错误,Python默认顺序从左至右
names[-3:-1] # 正确
names[-2:]

names.append(‘x1‘)
names.insert(1,‘x2‘)

names[2] = ‘x3‘
names.remove(‘x3‘)
del names[2]

names.pop() 默认删除最后一个
names.pop(2) 删除某个位置的值

names.index("x4")
names.clear() 清除列表
names.reverse() 反转
names.sort() 排序 特殊字符-数字-大写-小写
names.extend(names2) 合并


元祖一旦创建,无法修改--只读列表

 

十四、enumerate 枚举

list1 = ["这", "是", "一个", "测试"]
for index, item in enumerate(list1):
    print index, item
>>>
0 这
1 是
2 一个
3 测试

如果要统计文件的行数,可以这样写:

count = len(open(filepath, ‘r‘).readlines())

这种方法简单,但是可能比较慢,当文件比较大时甚至不能工作。

可以利用enumerate():

count = -1
for index, line in enumerate(open(filepath,‘r‘)):
    count += 1

 

十五、copy

浅copy的三种方式

1.names2  = names.copy()
2.
import copy
copy.copy()  copy一层
3.
names3 = names[:]

names2 = copy.deepcopy(names1) 深copy 克隆

 

十六、字符串方法

name="shopping list"
name.center(50,"-") name字符串打印在中间,其余以“-”填充,共50字符
name.format(name=‘li‘,year=23)
name.format_map({‘name‘:‘li‘,‘year‘:12})    

name.endswith("Li")  判断字符串是否以 Li结尾
 "A\tLi".expandtabs(10) 输出‘A      Li‘, 将\t转换成多长的空格
 name.find(‘A‘)  查找A,找到返回其索引, 找不到返回-1
 
 ‘9aA‘.isalnum()   True 判断是否为阿拉伯字符,包含字母和数字
 isalpha() 判断是否为纯英文字符
 isdecimal() 判断是否为十进制
 isdigit() 判断是否为整数
 isidentifier() 判断是否为合法变量名
 isnumeric() 判断是否只有数字
 
 "|".join([‘li‘,‘jack‘,‘rain‘])
‘li|jack|rain‘

name.ljust(50,"*") 字符串打印在左边,其余以“*” 填充,共50字符
name.rjust() ****右边

strip() 去两边的空格和回车

翻译字符,可用于加密解密
p = str.maketrans("abcdef", ‘123456‘)
print("alex".translate(p))  

replace() 替换
find() 找某值的下标
rfind() 找某值最右值的下标

split()
splitlines() 按换行来分,自动识别不同系统的换行
swapcase() 倒转大小写
name.zfill(50) 不够字符用0填充

 

十七、字典

字典 无序
del info[3]
pop("key3")

setdefault()
update()
info.items()
dict.fromkeys([6,7,8],"test") #初始化一个key值为6 7 8的字典,键值均为"test"

高效些,以索引的方式
for i in info:
    print i,info[i]

有个把数据转换成列表的过程,数据量大时不建议
for k,v in info.items():
    print k,v

 

Python之路,day2