复习 文件类型

简介:

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.png

如图,显示这个文件是“字节编译”文件

这个文件不是“文本文件”了,变成了“二进制文件”,打开后,显示如图:

11.png


文件 1.pyc 如何执行?

同 *.py 文件

也是

# python 1.pyc

111.png

7.优化代码:

经过优化的源码文件,扩展名为:.pyo ,比.pyc 文件更优化一些

# python -O 【表示优化】 -m 【调用模块】 py_compile   1.py

执行完成会多出个1.pyo的文件,如何执行?

# python 1.pyo

1111.png


文件 1.pyo 也不是“文本文件”了,打开后也是乱码,如图:

11111.png

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方法:

2.png

返回一个新的字典,没有值,默认是None

fromkeys适合 '值' 都是一样的情况:

22.png

例二:

222.png

2222.png

22222.png

通过for循环访问字典里的key:

222222.png

2222222.png

打印出key :

1   2   'a'    ('a', 'b')



同时打印出key和value:

22222222.png

222222222.png


改进版:

22222222222.png

改改进版:


222222222222.png



1.9 字典练习

1
2
3
4
5
6
7
8
9
10
11
#!/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'



本文转自 听丶飞鸟说 51CTO博客,原文链接:http://blog.51cto.com/286577399/2045587
相关文章
|
5天前
|
存储 Windows
学习文件和文件操作
要将数据进⾏持久化的保存,我们可以使用文件。
11 0
|
4月前
|
存储 编解码 Go
编程之美:自定义二进制文件实用指南
编程之美:自定义二进制文件实用指南
42 0
|
6月前
|
存储 Linux 测试技术
linux系统编程 文件属性
linux系统编程 文件属性
88 0
|
8月前
|
Python
Python编码格式、文件操作、目录操作
Python编码格式、文件操作、目录操作
20 0
|
9月前
|
Linux
分页阅读文件内容:深入了解Linux命令`more`
在Linux系统中,经常需要查看文件的内容,有时文件可能很大,一次性展示所有内容并不方便。这时,`more`命令就派上了用场。`more`是一个简单而强大的分页显示命令,能够帮助你逐页查看文件内容,避免信息的过度滚动。本文将详细介绍`more`命令的基本概念、用法和一些高级技巧。
152 0
|
11月前
|
iOS开发 C++
【C++知识点】文件操作(二)
【C++知识点】文件操作(二)
72 0
|
11月前
|
存储 C++ iOS开发
【C++知识点】文件操作(一)
【C++知识点】文件操作(一)
77 0
|
分布式计算 Java Hadoop
HDFSAPI编程源码-文件删除
HDFSAPI编程源码-文件删除
|
编译器 区块链 C语言
编程常见扩展名解读
编程常见扩展名解读
144 0
|
数据库 C语言
❤️C语言文件的操作与处理❤️----1.6W字详解,带你搞懂文件操作!!!(下)
想要通讯录的数据能保存,就涉及数据持久化的问题。我们一般数据持久化的方法有,把数据存放在磁盘文件、存放到数据库等方式。使用文件我们可以将数据直接存放在电脑的硬盘上,做到了数据的持久化。
❤️C语言文件的操作与处理❤️----1.6W字详解,带你搞懂文件操作!!!(下)