复习 文件类型
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了复习 文件类型相关的知识,希望对你有一定的参考价值。
1.3.python的文件类型
1.创建一个文件:
vim 1.py
#!/usr/bin/python (由python的解释器解释)
print 'Hello World'
2.如何获得输出?
python 1.py
或者
chmod +x 1.py (添加执行权限)
./1.py
3.源代码
python的源代码文件以.py为扩展名,由Python程序解释,不需要编译
4.字节代码
python的源码文件经过编译后生成的扩展名为.pyc的文件
所以,以.py和.pyc为结尾的文件都是python的脚本
*.pyc 文件内是字节代码,由源码文件编译后生成的,经过编译后,.pyc不是源码文件了
5.编译方法:
使用python的模块 py_compile 来编译
6.插入模块:
import py_compile
经查询,这个模块的方法为:
py_compile.compile('***.py')
举例:
vim 2.py
#!/usr/bin/python
import py_compile
py_compile.compile('./1.py') [此处可以写全名,表示当前目录;或者写绝对路径都可以]
完成后执行
python 2.py
ls 查看当前目录
发现多出一个 1.pyc 的文件
file 1.pyc 查看文件类型
如图,显示这个文件是“字节编译”文件
这个文件不是“文本文件”了,变成了“二进制文件”,打开后,显示如图:
文件 1.pyc 如何执行?
同 *.py 文件
也是
# python 1.pyc
7.优化代码:
经过优化的源码文件,扩展名为:.pyo ,比.pyc 文件更优化一些
# python -O 【表示优化】 -m 【调用模块】 py_compile 1.py
执行完成会多出个1.pyo的文件,如何执行?
# python 1.pyo
文件 1.pyo 也不是“文本文件”了,打开后也是乱码,如图:
1.pyo 比 1.pyc 更优化
通常我们更多的时候都写成 源码,假如你写的源码不想让别人看,可以编译成 .pyc 或者 .pyo 的文件, .pyc或 .pyo的文件是不需要 源码(.py) 文件存在的
1.4.python的变量
变量是计算机内存中一块区域,变量可以存储规定范围内的值,而且值可变。
python 下变量是对一个数据的引用
变量名相当于是个标签,通过标签来读内存中这块数据
给变量赋值相当于标签指向了内存中的另外一块区域
变量命名:
由字母、数字、下划线组成
不能以数字开头
不可以用关键字
例如:a a_1 _a3
变量的赋值:
a = 1
id(a) id是内置函数,可以查看a在内存的哪个区域
python运算符号:
赋值运算符
算数运算符
关系运算符
逻辑表达式
1.5. Python的数值和字符串
整数分为正数和负数
int的范围:
-2**31 --- (2**31)-1
字符串是个序列,序列的操作有“索引”和“切片”
可以通过索引操作
a = 'abcde'
a[0] = a
连接符
a[0]+a[1] = ab
分片:
a[0:2] = ab = a[:2]
a[1:2] = b
a[1:] = bcde
a[:-1] = abcd
a[:] = abcde
步长:
a[::1] = abcde
a[::2] = ace
例:
a[-4:-2] = bc
a[-2:-4:-1] = dc (-1代表方向步长)
1.6.元组
序列包括:字符串、列表、元组
序列两个特点:索引操作符和切片操作符
索引操作符:可以从序列中抓取一个特定项目
切片操作符:可以获取序列的一个切片,即一部分序列
序列的基本操作
1.len() 序列长度
2.+ 连接两个序列
3.* 重复序列元素
4.in 判断元素是否在序列中
5.max() 返回最大值
6.min() 返回最小值
7.cmp(x,y) 比较两个序列是否相等(x<y返回负数,x==y 返回0,x>y返回正数)
元组
元组与列表相似
元组和字符串一样是不可变的
元组可以存储一系列的值
元组通常用在用户定义的函数能够安转的采用一组值的时候,即被使用的元组的值不会改变。
元组的操作
元组和字符串一样属于序列,可以索引和切片
元组值不可变
元组拆分
t = (1,2,3)
a,b,c = t
这样
a = 1
b=2
c=3
元组的两个方法:
t.count(value) #如果value在元组里,返回1,否则,返回0;
t.index(value) #这个value的值的索引,是个整数;如果元组里面有很多重复的值
会显示第一个值的索引。
1.7 列表
列表用[]定义
是序列的一种,是可变类型的有序的序列
列表创建(3种例子):
list1=[]
list2=list()
list3=['a',1,2,(3,),['aaa',22,'3']]
list1.append() 追加
(list1+list2) * 2 乘法
取值
切片和索引
添加
list.append()
删除
del list[0] #del 还能删除变量,被删掉的变量返回 "没有定义"
list.remove([list[0]]) # 如果列表内有重复元素的默认只删除1第一个元素
修改
list[] = x
查找
var in list
插入
list.insert(1,'cccc')
排序
list.sort() #升序排序
反序排序
list.reverse() #反序排序
删除列表的元素,并返回值
list.pop() #默认删除最后一个,如果给索引,删除后会返回这个值
追加可迭代对象
list.extend() #从可迭代的对象里面取元素放到列表中去
举例:
list3.extend(range(5))
list3.extend('abcdefg')
list3.extend(('aa','bb'))
1.8 字典
list1 = ['name', 'age']
list2 = ['tom', '20']
zip函数:(作用:合并列表)
zip(list1, list2) = [('name', 'tom'), ('age', '20')]
字典 { }
字典的对象是可变的,跟列表一样,可以去改变值,可以增加删除
字典的key是不能变的
key和value是一对
value可以变,但是key不能变
dic = {} 空字典
dic = {'a':1, 1:123}
字典是无序的
len(dic) = 2 表示字典的长度,即有几个元素
dic.keys() 打印出所有的key
dic.values() 打印出字典里面的value
help(dic.get)
dic['a'] = 1 可以通过下标来访问
dic.get('a') = 1 正常用 .get() 访问
dic['a'] = 2 将key为‘a’的值改为 2
dic.get('a', 'linan') = 'linan'
dic.get 如果给定key的value,那么打印给定的value
判断字典中有没有指定的key:
方法一:
a in dic => True
b in dic => False
方法二:
dic.has_key('a') => True
dic.has_key('b') => False
items方法:将字典变成列表,一个key和value是一个元素
dic.items()
[('a', 2), (1, 23)]
变成列表后就可以‘索引’和’切片‘了
copy方法:
dic1 = dic.copy()
dic1 就变成了和 dic 一样的字典了
clear方法:
清除字典内的元素
pop方法:
dic = {'a':1, 1:123}
dic.pop(1) 删除key为1的字典元素
结果 :dic = {'a' : 1}
字典就剩下一个元素了
help(dic.update)
dic.update() 将两个字典更新为一个字典
例子:
dic1 = {'c' : 12 , 3:345}
dic = {'a':1, 1:123}
dic.update(dic1) = {'a':1, 1:123, 'c' : 12 , 3:345 }
dict 将列表等变成字典:(工厂函数)
list1 = ['name', 'age']
list2 = ['tom', '20']
zip(list1, list2) = [('name', 'tom'), ('age', '20')]
dict(zip(list1, list2)) = {'name': 'tom', 'age': '20'}
这样就把列表改为字典了
同理:
dict(a = 10 ,b = 20) => { 'a'=10, 'b'=20 }
fromkeys方法:
返回一个新的字典,没有值,默认是None
fromkeys适合 '值' 都是一样的情况:
例二:
通过for循环访问字典里的key:
打印出key :
1 2 'a' ('a', 'b')
同时打印出key和value:
改进版:
改改进版:
1.9 字典练习
#!/usr/bin/python info = {} name = raw_input('please input name:') age = raw_input('please input age:') gender = raw_input('please input M/F:') info['name'] = name info['age'] = age info['gender'] = gender for k,v in info.items(): print "%s: %s" % (k,v) print 'main end'
以上是关于复习 文件类型的主要内容,如果未能解决你的问题,请参考以下文章
我的Android进阶之旅关于Android平台获取文件的mime类型:为啥不传小写后缀名就获取不到mimeType?为啥android 4.4系统获取不到webp格式的mimeType呢?(代码片段
我的Android进阶之旅关于Android平台获取文件的mime类型:为啥不传小写后缀名就获取不到mimeType?为啥android 4.4系统获取不到webp格式的mimeType呢?(代码片段