本节内容

  1. 列表与字典
  2. 字符串
  3. 集合
  4. 元组
  5. 文件

1. 列表与字典

列表与字典这两个对象类型都是其他对象的集合。这两种类型几乎是Python所有脚本的主要工作组件。它们都可以在原处进行修改,也可以按需增长或缩短,而且可以包含任何种类的对象或者或者或者被嵌套。借助这些类型,可以在脚本中创建并处理任意的复杂的信息结构。

列表

列表是Python中最具灵活性的有序集合对象类型,而且是我们以后最常用的数据类型之一。通过列表可以对数据实现最方便的存储,修改等操作。

定义列表

>>> names = ['ZhangSan','LiSi','WangWu']

基本列表操作

>>> names
['ZhangSan', 'LiSi', 'WangWu']
>>> len(names)        #计算列表长度
3
>>> names[0]        #访问列表中的元素,下标从0开始计数
'ZhangSan'
>>> names[2]
'WangWu'
>>> names[-1]        #还可以倒着取
'WangWu'
>>> names[-2]
'LiSi'
>>> 'WangWu' in names        #检查元素是否在列表中
True
>>> names + ['ZhaoLiu','SunQi','ZhouBa']        #列表合并
['ZhangSan', 'LiSi', 'WangWu', 'ZhaoLiu', 'SunQi', 'ZhouBa']
>>> names        #原始列表并不会发生改变
['ZhangSan', 'LiSi', 'WangWu']
>>> names * 3        #列表重复
['ZhangSan', 'LiSi', 'WangWu', 'ZhangSan', 'LiSi', 'WangWu', 'ZhangSan', 'LiSi', 'WangWu']
>>> names
['ZhangSan', 'LiSi', 'WangWu']

分片和矩阵

>>> names = ['ZhangSan','LiSi','WangWu','ZhaoLiu','SunQi','ZhouBa','WuJiu']
>>> names[4:1]        #切片是按照从左往右取的,不能倒着取
[]
>>> names[1:4]     #取下标1至下标4之间的数字,包括1,不包括4
['LiSi', 'WangWu', 'ZhaoLiu']
>>> names[1:-1]     #取下标1至-1的值,不包括-1
['LiSi', 'WangWu', 'ZhaoLiu', 'SunQi', 'ZhouBa']
>>> names[0:3]
['ZhangSan', 'LiSi', 'WangWu']
>>> names[:3]     #如果是从头开始取,0可以忽略,跟上句效果一样
['ZhangSan', 'LiSi', 'WangWu']
>>> names[3:]     #如果想取最后一个,必须不能写-1,只能这么写
['ZhaoLiu', 'SunQi', 'ZhouBa', 'WuJiu']
>>> names[3:-1]     #这样-1就不会被包含了
['ZhaoLiu', 'SunQi', 'ZhouBa']
>>> names[0::2]     #后面的2是代表,每隔一个元素,就取一个
['ZhangSan', 'WangWu', 'SunQi', 'WuJiu']
>>> names[::2]     #和上句效果一样
['ZhangSan', 'WangWu', 'SunQi', 'WuJiu']>>> names = [['ZhangSan','LiSi'],['WangWu','ZhaoLiu'],['SunQi','ZhouBa','WuJiu']]
>>> names[1]
['WangWu', 'ZhaoLiu']
>>> names[1][1]     #嵌套索引
'ZhaoLiu'
>>> names[2][0]
'SunQi'
>>> names[2][2]
'WuJiu'

View Code

追加

>>> names
['ZhangSan', 'LiSi', 'WangWu', 'ZhaoLiu', 'SunQi', 'ZhouBa', 'WuJiu']
>>> names.append('按照顺序排到最后位置')
>>> names
['ZhangSan', 'LiSi', 'WangWu', 'ZhaoLiu', 'SunQi', 'ZhouBa', 'WuJiu', '按照顺序排到最后位置']

View Code

插入

>>> names
['ZhangSan', 'LiSi', 'WangWu', 'ZhaoLiu', 'SunQi', 'ZhouBa', 'WuJiu', '按照顺序排到最后位置']
>>> names.insert(2,'插队到第2个位置')
>>> names
['ZhangSan', 'LiSi', '插队到第2个位置', 'WangWu', 'ZhaoLiu', 'SunQi', 'ZhouBa', 'WuJiu', '按照顺序排到最后位置']

View Code

修改

>>> names
['ZhangSan', 'LiSi', '插队到第2个位置', 'WangWu', 'ZhaoLiu', 'SunQi', 'ZhouBa', 'WuJiu', '按照顺序排到最后位置']
>>> names[3] = '第三个位置换人了'
>>> names
['ZhangSan', 'LiSi', '插队到第2个位置', '第三个位置换人了', 'ZhaoLiu', 'SunQi', 'ZhouBa', 'WuJiu', '按照顺序排到最后位置']
>>> names[5:7] = ['第五个位置换人了','第六个位置换人了']
>>> names
['ZhangSan', 'LiSi', '插队到第2个位置', '第三个位置换人了', 'ZhaoLiu', '第五个位置换人了', '第六个位置换人了', 'WuJiu', '按照顺序排到最后位置']
>>> names[2:4] = ['第二个和第三个位置的人离开了,新来的人插队到第二个位置']
>>> names
['ZhangSan', 'LiSi', '第二个和第三个位置的人离开了,新来的人插队到第二个位置', 'ZhaoLiu', '第五个位置换人了', '第六个位置换人了', 'WuJiu', '按照顺序排到最后位置']

View Code

删除

>>> names
['ZhangSan', 'LiSi', '第二个和第三个位置的人离开了,新来的人插队到第二个位置', 'ZhaoLiu', '第五个位置换人了', '第六个位置换人了', 'WuJiu', '按照顺序排到最后位置']
>>> del names[2]
>>> names
['ZhangSan', 'LiSi', 'ZhaoLiu', '第五个位置换人了', '第六个位置换人了', 'WuJiu', '按照顺序排到最后位置']
>>> del names[3:5]     #删除第三个和第四个元素
>>> names
['ZhangSan', 'LiSi', 'ZhaoLiu', 'WuJiu', '按照顺序排到最后位置']
>>> names.remove('ZhaoLiu')     #删除指定元素
>>> names
['ZhangSan', 'LiSi', 'WuJiu', '按照顺序排到最后位置']
>>> names.pop()     #删除列表最后一个值
'按照顺序排到最后位置'
>>> names
['ZhangSan', 'LiSi', 'WuJiu']
>>> names.pop(1)     #指定列表索引值,删除指定元素
'LiSi'
>>> names
['ZhangSan', 'WuJiu']
>>> names[1:] = []     #删除第一个及后面所有元素
>>> names
['ZhangSan']
>>> names.clear()        #清空整个列表
>>> names
[]

View Code

扩展

>>> names
['ZhangSan']
>>> L = ['李四','王五','赵六']
>>> names.extend(L)
>>> names
['ZhangSan', '李四', '王五', '赵六']

View Code

拷贝

##    浅拷贝
>>> names = ['ZhangSan', 'LiSi', [1,2,3], 'WangWu', 'ZhouLiu', 'SunQi']
>>> names_copy = names.copy()
>>> names_copy
['ZhangSan', 'LiSi', [1, 2, 3], 'WangWu', 'ZhouLiu', 'SunQi']
>>> names_copy[1] = 'TengBb'
>>> names
['ZhangSan', 'LiSi', [1, 2, 3], 'WangWu', 'ZhouLiu', 'SunQi']
>>> names_copy
['ZhangSan', 'TengBb', [1, 2, 3], 'WangWu', 'ZhouLiu', 'SunQi']>>> names_copy[2][0] = 100
>>> names
['ZhangSan', 'LiSi', [100, 2, 3], 'WangWu', 'ZhouLiu', 'SunQi']
>>> names_copy
['ZhangSan', 'TengBb', [100, 2, 3], 'WangWu', 'ZhouLiu', 'SunQi']#从上述结果可以看出,names.copy()复制出一个与names列表一样的列表当修改列表中的内容时,如果列表中嵌套有列表,那么如果修改是列表的第一层,那么只会更改修改的那个列表,如果修改的是嵌套里的列表的内容,则两个列表的内容的都会更改##    深拷贝
>>> import copy
>>> names = ['ZhangSan', 'LiSi', [1,2,3], 'WangWu', 'ZhouLiu', 'SunQi']
>>> names_copy = copy.deepcopy(names)
>>> names_copy
['ZhangSan', 'LiSi', [1, 2, 3], 'WangWu', 'ZhouLiu', 'SunQi']
>>> names_copy[2][0] = 100
>>> names
['ZhangSan', 'LiSi', [1, 2, 3], 'WangWu', 'ZhouLiu', 'SunQi']
>>> names_copy
['ZhangSan', 'LiSi', [100, 2, 3], 'WangWu', 'ZhouLiu', 'SunQi']#如上结果所示,深拷贝的时候,就是完全都开辟出另外一个内存空间,及修改其中一个列表中任意一个值,另外一个列表都不会发生变化

View Code

统计

>>> names
['ZhangSan', 'LiSi', 'WangWu', 'ZhangSan', 'SunQi']
>>> names.count('ZhangSan')
2

View Code

排序&反转

>>> names
['ZhangSan', 'LiSi', 'WangWu', 'ZhouLiu', 'SunQi', 1, 2, 3]
>>> names.sort()     #排序
Traceback (most recent call last):File "<pyshell#36>", line 1, in <module>names.sort()
TypeError: '<' not supported between instances of 'int' and 'str'     #3.0里不同数据类型不能放在一起排序了
>>> names[-3:] = ['1','2','3']
>>> names
['LiSi', 'SunQi', 'WangWu', 'ZhangSan', 'ZhouLiu', '1', '2', '3']
>>> names.sort()
>>> names
['1', '2', '3', 'LiSi', 'SunQi', 'WangWu', 'ZhangSan', 'ZhouLiu']>>> names.reverse()     #反转
>>> names
['ZhouLiu', 'ZhangSan', 'WangWu', 'SunQi', 'LiSi', '3', '2', '1']

View Code

还有其它方法可以实现排序!!

获取下标

>>> names
['ZhaoLiu', 'LiSi', 'WangWu', 'WangWu', 'SunQi']
>>> names.index('WangWu')
2          #只返回找到的第一个下标

View Code

字典

除了列表以外,字典(dictionary)也许是Python之中最灵活的内置数据结构类型。如果把列表看作是有序的对象集合,那么就可以把字典当成是无序的集合。它们主要的差别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

字典是一种 key - value 的数据类型。语法如下所示:

stu_info = {'stu01':'ZhangSan','stu02':'LiSi','stu03':'WangWu'
} 

注:字典的key不能是list类型

字典的特性:

  • key-value格式,key是唯一的,天生去重
  • dict是无序的
  • 查询速度快
>>> dict = {'b':2,'a':1,'b':5,'d':3,'a':6,'c':10}
>>> dict
{'b': 5, 'a': 6, 'd': 3, 'c': 10}     #去重

字典的基本操作

查找

>>> stu_info
{'stu01': 'ZhangSan', 'stu02': 'LiSi', 'stu03': 'WangWu'}
>>> 'stu02' in stu_info     #标准用法
True
>>> stu_info.get('stu02')     #获取值
'LiSi'
>>> stu_info['stu02']     #同上,但是看下面
'LiSi'
>>> stu_info['stu05']     #如果一个key不存在,就报错,get不会,不存在只返回None,看下一个。
Traceback (most recent call last):File "<pyshell#16>", line 1, in <module>stu_info['stu05']
KeyError: 'stu05'
>>> print(stu_info.get('stu05'))
None
>>> stu_info.get('stu05',88)     #如果要获取的key不存在,那么返回定义的值。如果存在则返回该key的值,看下一个。
88
>>> stu_info.get('stu02',88)
'LiSi'

View Code

增加

>>> stu_info
{'stu01': 'ZhangSan', 'stu02': 'LiSi', 'stu03': 'WangWu'}
>>> stu_info['stu04'] = '赵六'
>>> stu_info
{'stu01': 'ZhangSan', 'stu02': 'LiSi', 'stu03': 'WangWu', 'stu04': '赵六'}

View Code

修改

>>> stu_info
{'stu01': 'ZhangSan', 'stu02': 'LiSi', 'stu03': 'WangWu', 'stu04': '赵六'}
>>> stu_info['stu01'] = '张三'
>>> stu_info
{'stu01': '张三', 'stu02': 'LiSi', 'stu03': 'WangWu', 'stu04': '赵六'}

View Code

删除

>>> stu_info
{'stu01': '张三', 'stu02': 'LiSi', 'stu03': 'WangWu', 'stu04': '赵六'}
>>> stu_info.pop('stu01')    #删除指定值
'张三'
>>> stu_info
{'stu02': 'LiSi', 'stu03': 'WangWu', 'stu04': '赵六'}
>>> del stu_info['stu04']     #同上一个
>>> stu_info
{'stu02': 'LiSi', 'stu03': 'WangWu'}
>>> stu_info.popitem()     #随机删除
('stu03', 'WangWu')
>>> stu_info
{'stu02': 'LiSi'}

View Code

其他用法

>>> stu_info
{'stu01': 'ZhangSan', 'stu02': 'LiSi', 'stu03': 'WangWu'}
>>> list(stu_info.keys())     #返回字典的键列表,3.0中要用list调用来显示所有值
['stu01', 'stu02', 'stu03']
>>> list(stu_info.values())     #返回字典的值列表
['ZhangSan', 'LiSi', 'WangWu']#设置默认值
>>> stu_info.setdefault('stu04','ZhaoLiu')
'ZhaoLiu'
>>> stu_info
{'stu01': 'ZhangSan', 'stu02': 'LiSi', 'stu03': 'WangWu', 'stu04': 'ZhaoLiu'}
>>> stu_info.setdefault('stu01','张三')
'ZhangSan'
>>> stu_info
{'stu01': 'ZhangSan', 'stu02': 'LiSi', 'stu03': 'WangWu', 'stu04': 'ZhaoLiu'}#update (把一个字典的键和值合并到另一个字典中,盲目地覆盖相同键的值)
>>> stu_info
{'stu01': 'ZhangSan', 'stu02': 'LiSi', 'stu03': 'WangWu', 'stu04': 'ZhaoLiu'}
>>> b = {'a':1,'b':2,'c':3}
>>> stu_info.update(b)
>>> stu_info
{'stu01': 'ZhangSan', 'stu02': 'LiSi', 'stu03': 'WangWu', 'stu04': 'ZhaoLiu', 'a': 1, 'b': 2, 'c': 3}#items  返回字典的(key,value)对元组
>>> list(stu_info.items())
[('stu01', 'ZhangSan'), ('stu02', 'LiSi'), ('stu03', 'WangWu'), ('stu04', 'ZhaoLiu'), ('a', 1), ('b', 2), ('c', 3)]

View Code

2. 字符串

和列表、元祖一样,字符串也是一个序列对象,支持索引、切片操作。

特性:不可修改

>>> s = 'hello World'
>>> s.capitalize()        #首字母变大写,其它字母都变小写
'Hello world'
>>> s.casefold()        #大写全部变小写
'hello world'
>>> s.center(50,"-")
'-------------------hello World--------------------'
>>> s.count('l')        #统计"l"出现的次数
3
>>> s.encode()        #将字符串编码成bytes格式
b'hello World'
>>> s.endswith("ld")        #判断字符串是否以 "ld"结尾
True
>>> "hello\tworld".expandtabs(10)        #将\t转换成10个空格
'hello     world'
>>> s.find('l')        #查找第一个出现"l"的位置,找到返回其索引, 找不到返回-1
2format:
>>> msg = "my name is {},and age is {}"
>>> msg.format("tom",22)
'my name is tom,and age is 22'
>>> msg = "my name is {1}, and age is {0}"
>>> msg.format("tom",22)
'my name is 22, and age is tom'
>>> msg = "my name is {name}, and age is {age}"
>>> msg.format(age=22,name="tom")
'my name is tom, and age is 22'format_map:
>>> msg.format_map({'name':'tom','age':22})
'my name is tom, and age is 22'>>> '123'.isdigit()        #检测字符串是否只由数字组成。
True
>>> 'asd123'.isalnum()        #检测字符串是否由字母和数字组成。
True
>>> u'123'.isnumeric()        #检测字符串是否只由数字组成。这种方法是只针对unicode对象。
True
>>> u'23456'.isdecimal()        #检查字符串是否只包含十进制字符。这种方法只存在于unicode对象。
True
>>> "      ".isspace()        #检测字符串是否只由空格组成。
True
>>> 'Hello World'.istitle()        #检测字符串中所有的单词拼写首字母是否为大写,且其他字母为小写。
True
>>> 'HELLO WORLD'.isupper()        #检测字符串中所有的字母是否都为大写。
True
>>> "-".join(["a","b","c"])        #用于将序列中的元素以指定的字符连接生成一个新的字符串。
'a-b-c'maketrans:        #使用maketrans() 方法将所有元音字母转换为指定的数字:
>>> intab = "aeiou"
>>> outtab = "12345"
>>> trantab = str.maketrans(intab, outtab)
>>>
>>> str = "this is string example....wow!!!";
>>> str.translate(trantab)
'th3s 3s str3ng 2x1mpl2....w4w!!!'>>> "www.runoob.com".partition(".")        #用来根据指定的分隔符将字符串进行分割。
('www', '.', 'runoob.com')replace:        #把字符串中的 old(旧字符串) 替换成 new(新字符串),如果指定第三个参数max,则替换不超过 max 次。
>>> str = "this is string example....wow!!! this is really string";
>>> str.replace("is", "was")
'thwas was string example....wow!!! thwas was really string'
>>> str.replace("is", "was", 3)
'thwas was string example....wow!!! thwas is really string'>>> 'Hello World'.swapcase()        #用于对字符串的大小写字母进行转换。
'hELLO wORLD'>>> 'hello world'.zfill(20)        #返回指定长度的字符串,原字符串右对齐,前面填充0。
'000000000hello world'>>> 'hello world'.ljust(20,'-')
'hello world---------'
>>> 'hello world'.rjust(20,'-')
'---------hello world'isidentifier:        #检测一段字符串可否被当作标志符,即是否符合变量命名规则
>>> str = "ddefdsdff_哈哈"
>>> str.isidentifier()
True

 3. 集合

集合是一个无序的,不重复的数据组合。同样,集合有着广泛的应用,尤其是在涉及数字和数据库的工作中。它的主要作用如下:

  • 去重,把一个列表变成集合,就自动去重了
  • 关系测试,测试两组数据之间的交集、差集、并集等关系

限制:

集合只能包含不可变的(即可散列的)对象类型。因此,列表和字典不能嵌入到集合中,但是,元组是可以嵌入的。

常用操作

>>> s = set([2,10,8,3])     #创建一个数值集合
>>> s
{8, 3, 2, 10}
>>> t = set('Hello')     #创建一个唯一字符的集合
>>> t
{'e', 'l', 'H', 'o'}
>>> len(s),len(t)     #查看集合的长度
(4, 4)
>>> 3 in s     #测试3是否包含在 s集合 内
True
>>> 3 not in s     #测试3是否不包含在 s集合 内
False#基本操作
>>> t.add('world')     #添加一项
>>> t
{'l', 'H', 'e', 'world', 'o'}
>>> s.update([15,26,38])     #在s中添加多项
>>> s
{2, 3, 38, 8, 10, 15, 26}
>>> t.remove('H')     #删除一项
>>> t
{'l', 'e', 'world', 'o'}
>>> len(t)     #集合的长度
4>>> s1 = {1,2,3,4}
>>> s2 = {1,5,3,6}
>>> s1.intersection(s2)     #交集(返回一个新的 set 包含 s1 和 s2 中的公共元素)
{1, 3}
>>> s1 & s2     #同上一个(交集)
{1, 3}
>>> s1.union(s2)     #并集(返回一个新的 set 包含 s1 和 s2 中的每一个元素)
{1, 2, 3, 4, 5, 6}
>>> s1 | s2     #同上一个(并集)
{1, 2, 3, 4, 5, 6}
>>> s1.difference(s2)     #差集(返回一个新的 set 包含 s1 中有但是 s2 中没有的元素)
{2, 4}
>>> s1 - s2     #同上一个(差集)
{2, 4}
>>> s1.symmetric_difference(s2)     #对称差集(返回一个新的 set 包含 s1 和 s2 中不重复的元素)
{2, 4, 5, 6}
>>> s1 ^ s2     #同上一个(对称差集)
{2, 4, 5, 6}>>> s1.issubset(s2)     #测试是否 s1 中的每一个元素都在 s2 中
False
>>> s1.issubset({1,2,3,4,5,6,7,8})
True
>>> s1 <= s2     #同上一个
False
>>> s1 <= {1,2,3,4,5,6,7,8}
True
>>> s1.issuperset(s2)     #测试是否 s1 中的每一个元素都在 s2 中
False
>>> s1.issuperset(set([1,3]))
True
>>> s1 >= s2     #同上一个
False
>>> s1 >= {1,3}
True>>> s1.copy()     #返回集合 s1 的一个浅复制
{1, 2, 3, 4}

View Code

4. 元组

元组与列表非常类似,也是存一组数,具有列表的大多数属性。但是元组不能在原处修改(它们是不可变的),所以又叫只读列表。

定义一个元组

>>> T = ('ZhangSan','LiSi','WangWu','ZhaoLiu','SunQi')

  

它只有两个方法:

>>> T.count('WangWu')
1
>>> T.index('ZhaoLiu')
3

 5. 文件

对文件操作流程:

  1. 打开文件,得到文件句柄并赋值给一个变量
  2. 通过句柄对文件进行操作
  3. 关闭文件

现有文件如下

Somehow, it seems the love I knew was always the most destructive kind
不知为何,我经历的爱情总是最具毁灭性的的那种
Yesterday when I was young
昨日当我年少轻狂
The taste of life was sweet
生命的滋味是甜的
As rain upon my tongue
就如舌尖上的雨露
I teased at life as if it were a foolish game
我戏弄生命 视其为愚蠢的游戏
The way the evening breeze
就如夜晚的微风
May tease the candle flame
逗弄蜡烛的火苗
The thousand dreams I dreamed
我曾千万次梦见
The splendid things I planned
那些我计划的绚丽蓝图
I always built to last on weak and shifting sand
但我总是将之建筑在易逝的流沙上
I lived by night and shunned the naked light of day
我夜夜笙歌 逃避白昼赤裸的阳光
And only now I see how the time ran away
事到如今我才看清岁月是如何匆匆流逝
Yesterday when I was young
昨日当我年少轻狂
So many lovely songs were waiting to be sung
有那么多甜美的曲儿等我歌唱
So many wild pleasures lay in store for me
有那么多肆意的快乐等我享受
And so much pain my eyes refused to see
还有那么多痛苦 我的双眼却视而不见
I ran so fast that time and youth at last ran out
我飞快地奔走 最终时光与青春消逝殆尽
I never stopped to think what life was all about
我从未停下脚步去思考生命的意义
And every conversation that I can now recall
如今回想起的所有对话
Concerned itself with me and nothing else at all
除了和我相关的 什么都记不得了
The game of love I played with arrogance and pride
我用自负和傲慢玩着爱情的游戏
And every flame I lit too quickly, quickly died
所有我点燃的火焰都熄灭得太快
The friends I made all somehow seemed to slip away
所有我交的朋友似乎都不知不觉地离开了
And only now I'm left alone to end the play, yeah
只剩我一个人在台上来结束这场闹剧
Oh, yesterday when I was young
噢 昨日当我年少轻狂
So many, many songs were waiting to be sung
有那么那么多甜美的曲儿等我歌唱
So many wild pleasures lay in store for me
有那么多肆意的快乐等我享受
And so much pain my eyes refused to see
还有那么多痛苦 我的双眼却视而不见
There are so many songs in me that won't be sung
我有太多歌曲永远不会被唱起
I feel the bitter taste of tears upon my tongue
我尝到了舌尖泪水的苦涩滋味
The time has come for me to pay for yesterday
终于到了付出代价的时间 为了昨日
When I was young
当我年少轻狂

View Code

基本操作

>>> f = open(r'd:\myfile.txt')     #默认以读模式打开文件
>>> print(f.readline())     #读取第一行
Somehow, it seems the love I knew was always the most destructive kind>>> print(f.readline())     #读取下一行
不知为何,我经历的爱情总是最具毁灭性的的那种>>> data = f.read()     #读取剩下的所有内容,文件大时不要用
>>> print(data)     #打印文件
Yesterday when I was young
昨日当我年少轻狂
The taste of life was sweet
生命的滋味是甜的
......
......
When I was young
当我年少轻狂
>>> f.close()     #关闭文件

  

打开文件的模式有:

  • r,只读模式(默认)。
  • w,只写模式。【不可读;不存在则创建;存在则删除内容;】
  • a,追加模式。【不可读;   不存在则创建;存在则只追加内容;】

"+" 表示可以同时读写某个文件

  • r+,可读写文件。【可读;可写;可追加】
  • w+,写读
  • a+,        【可读;不存在则创建;存在则只追加内容;】

"U"表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)

  • rU
  • r+U

"b"表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

  • rb
  • wb
  • ab

其它语法

class file(object):def close(self): # real signature unknown; restored from __doc__
        关闭文件"""close() -> None or (perhaps) an integer.  Close the file.Sets data attribute .closed to True.  A closed file cannot be used forfurther I/O operations.  close() may be called more than once withouterror.  Some kinds of file objects (for example, opened by popen())may return an exit status upon closing."""def fileno(self): # real signature unknown; restored from __doc__
        文件描述符  """fileno() -> integer "file descriptor".This is needed for lower-level file interfaces, such os.read()."""return 0    def flush(self): # real signature unknown; restored from __doc__
        刷新文件内部缓冲区""" flush() -> None.  Flush the internal I/O buffer. """passdef isatty(self): # real signature unknown; restored from __doc__
        判断文件是否是同意tty设备""" isatty() -> true or false.  True if the file is connected to a tty device. """return Falsedef next(self): # real signature unknown; restored from __doc__
        获取下一行数据,不存在,则报错""" x.next() -> the next value, or raise StopIteration """passdef read(self, size=None): # real signature unknown; restored from __doc__
        读取指定字节数据"""read([size]) -> read at most size bytes, returned as a string.If the size argument is negative or omitted, read until EOF is reached.Notice that when in non-blocking mode, less data than what was requestedmay be returned, even if no size parameter was given."""passdef readinto(self): # real signature unknown; restored from __doc__
        读取到缓冲区,不要用,将被遗弃""" readinto() -> Undocumented.  Don't use this; it may go away. """passdef readline(self, size=None): # real signature unknown; restored from __doc__
        仅读取一行数据"""readline([size]) -> next line from the file, as a string.Retain newline.  A non-negative size argument limits the maximumnumber of bytes to return (an incomplete line may be returned then).Return an empty string at EOF."""passdef readlines(self, size=None): # real signature unknown; restored from __doc__
        读取所有数据,并根据换行保存值列表"""readlines([size]) -> list of strings, each a line from the file.Call readline() repeatedly and return a list of the lines so read.The optional size argument, if given, is an approximate bound on thetotal number of bytes in the lines returned."""return []def seek(self, offset, whence=None): # real signature unknown; restored from __doc__
        指定文件中指针位置"""seek(offset[, whence]) -> None.  Move to new file position.Argument offset is a byte count.  Optional argument whence defaults to0 (offset from start of file, offset should be >= 0); other values are 1(move relative to current position, positive or negative), and 2 (moverelative to end of file, usually negative, although many platforms allowseeking beyond the end of a file).  If the file is opened in text mode,only offsets returned by tell() are legal.  Use of other offsets causesundefined behavior.Note that not all file objects are seekable."""passdef tell(self): # real signature unknown; restored from __doc__
        获取当前指针位置""" tell() -> current file position, an integer (may be a long integer). """passdef truncate(self, size=None): # real signature unknown; restored from __doc__
        截断数据,仅保留指定之前数据"""truncate([size]) -> None.  Truncate the file to at most size bytes.Size defaults to the current file position, as returned by tell()."""passdef write(self, p_str): # real signature unknown; restored from __doc__
        写内容"""write(str) -> None.  Write string str to file.Note that due to buffering, flush() or close() may be needed beforethe file on disk reflects the data written."""passdef writelines(self, sequence_of_strings): # real signature unknown; restored from __doc__
        将一个字符串列表写入文件"""writelines(sequence_of_strings) -> None.  Write the strings to the file.Note that newlines are not added.  The sequence can be any iterable objectproducing strings. This is equivalent to calling write() for each string."""passdef xreadlines(self): # real signature unknown; restored from __doc__
        可用于逐行读取文件,非全部"""xreadlines() -> returns self.For backward compatibility. File objects now include the performanceoptimizations previously implemented in the xreadlines module."""pass

View Code

with语句

为了避免打开文件后忘记关闭,可以通过管理上下文,即:

>>> with open(r'd:\myfile.txt') as f:...

如此方式,当with代码块执行完毕时,内部会自动关闭并释放文件资源。

在 Python 2.7后,with又支持同时对多个文件的上下文进行管理,即:

>>> with open(r'd:\myfile1.txt') as obj1,open(r'd:\myfile2.txt') as obj2:...

转载于:https://www.cnblogs.com/cyfiy/p/7640786.html

Python 基础之-数据类型相关推荐

  1. Python基础之数据类型(一)

    Python基础之数据类型(一) 一.数据类型种类 二.int类型 三.float类型 1.float介绍 2.float简单示例 三.bool类型 1.布尔值为true 2.布尔值为false 四. ...

  2. Python基础之数据类型II

    Python基础之数据类型II 3.List(列表) 引子 我们现在已经学过的基础数据类型: int float str bool,str类型可以帮我们存储少量的数据,但是str有什么缺点? str存 ...

  3. python基础之数据类型III

    python基础之数据类型III 5.Dictionaries(字典) 5.1字典的认识 引子 我已经讲过的数据类型 int float str bool tuple list,我们讲的列表的数据类型 ...

  4. 1. Python基础之数据类型与注释

    文章目录 Python基础之数据类型与注释 1.变量 2.数据类型 2.1 Number类型 Int 整型 Float 浮点型 2.2 Bool 布尔类型 2.3 String 字符串类型 2.4 L ...

  5. 【python基础】——数据类型(列表、字典、集合)

    骏马金龙--python语法基础 python基础 变量与运算 符号 // % ** 意义 整除 整除取余 幂次方 数据种类 #mermaid-svg-7nSRRijcYFCYwTDr .label{ ...

  6. python 基础(数据类型、运算符、流程控制、推导式、函数等...更新中)

    python基础 一.认识Python 1.python起源 Python 的创始人为吉多·范罗苏姆(Guido van Rossum),江湖人称"龟叔". 1991年,第一个Py ...

  7. python基础之数据类型与变量

    阅读目录 一.变量 二.数据类型 2.1 什么是数据类型及数据类型分类 2.2 标准数据类型: 2.2.1 数字 2.2.1.1 整型: 2.2.1.2 长整型long: 2.2.1.3 布尔bool ...

  8. python定义变量类型_一、python基础之数据类型与变量

    一.变量 声明变量 #!/usr/bin/env python age=9 name='ld' name1='ld1' 变量作用:保存状态(程序的运行本质是一系列状态的变化,变量的目的就是用来保存状态 ...

  9. python定义一个整数变量a_第二篇.1、python基础之数据类型与变量

    一.变量 1 什么是变量之声明变量 #变量名=变量值 age=18 gender1='male' gender2='female' 2 为什么要有变量 变量作用:"变"=>变 ...

  10. python基础之数据类型

    一.数据类型 python中的数据类型 python使用对象模型来存储数据,每一个数据类型都有一个内置的类,每新建一个数据,实际就是在初始化生成一个对象,即所有数据都是对象. 对象三个特性: 身份:内 ...

最新文章

  1. python 深度 视差 计算_开源双目视觉BM算法-Matlab/Python/Javascript
  2. 个人技术生涯的感悟(2)
  3. “学在清华”清华大学本科教育主题展在校史馆开展
  4. {网络编程}和{多线程}应用:基于TCP协议【实现多个客户端发送文件给一个服务器端】--练习
  5. Hadoop Map/Reduce的工作流
  6. 四则运算栈c语言程序,四则运算   c语言编程
  7. 后端:C#操作Mongodb用法笔记
  8. python 趣味编程课_青少年编程:Python趣味编程基础入门课程
  9. SSM项目中配置问题
  10. 如何创建自己的composer包
  11. 锤子手机成绝唱了,网友微博喊话罗永浩:赶快买回来吧!
  12. 搜索与问答——【NeurIPS 2021】BEIR:信息检索模型零样本评估的异构基准
  13. 关于MMORPG多人对战中热点问题的解决思路讨论
  14. 安卓或苹果IOS的APP应用如何取名字?好的名字技巧?
  15. 2021-05-29当微商怎么引流?微商如何利用闲鱼引流?
  16. 简单的皮肤库 Skin++
  17. 11.0、C语言数据结构——栈
  18. 【IoT】产品开发:产品开发战略指南:如何获得竞争优势?
  19. 国产开发板各项性能测试--米尔MYD-YT507H开发板
  20. 不出门也能看风景,观景软件分享

热门文章

  1. 一个硬盘和内存的感人爱情故事!墙裂推荐!!!
  2. 服务器主板开机显示器无信号,显示器无信号,详细教您怎么解决电脑开机后显示器无信号...
  3. linux服务器数据库备份
  4. cv2.CV_IMWRITE_JPEG_QUALITY 参数是否影响保存图片文件的大小
  5. 测绘地理信息公司服务器,2018年测绘地理信息行业整体发展情况,及各类资质企业运行情况[图]...
  6. slf4j 使用 java_[JAVA]SLF4J及其实现类框架使用简介
  7. 数字信息化是计算机处理信息的基础,档案信息化、数字化、网络化及三者的关系...
  8. mysql insert into 语句卡住?原因?
  9. 运行mask rcnn训练代码 程序在Epoch 1/20时出现程序挂起现象 解决办法
  10. mean()函数基本用法