复习 文件类型

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'


以上是关于复习 文件类型的主要内容,如果未能解决你的问题,请参考以下文章

python基础复习-1-1文件类型变量运算符表达式

安卓复习8

安卓复习8

安卓复习8

我的Android进阶之旅关于Android平台获取文件的mime类型:为啥不传小写后缀名就获取不到mimeType?为啥android 4.4系统获取不到webp格式的mimeType呢?(代码片段

我的Android进阶之旅关于Android平台获取文件的mime类型:为啥不传小写后缀名就获取不到mimeType?为啥android 4.4系统获取不到webp格式的mimeType呢?(代码片段