Python之路,day2
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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的主要内容,如果未能解决你的问题,请参考以下文章