Python 元组

Python的元组与列表(List)类似,不同之处在于元组一旦被定义里面的元素不能修改,字符串也是不能被修改的

元组定义使用小括号,列表使用方括号。

SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。

元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

正常我们ip信息、数据库配置信息等不想被别人修改,可以用元组定义。

t=()#定义一个空元组

 元组中只有两种方法:

count:统计数量

index:找下标

文件读写

 读文件

打开一个文件用open()方法(open()返回一个文件对象,它是可迭代的):

>>> f = open('test.txt', 'r',encoing='utf-8')

r表示读文件,只能读不能写,文件不存在时会报错

文件使用完毕后必须关闭,因为文件对象会占用操作系统的资源,并且操作系统同一时间能打开的文件数量也是有限的

>>> f.close()

由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,Python引入了with语句来自动帮我们调用close()方法:

with open('name.txt', 'r') as f,open('name.txt', 'w') as f1: #同时打开两个文件
print(f.read())

python文件对象提供了三个“读”方法: read()、readline() 和 readlines()。每种方法可以接受一个变量以限制每次读取的数据量。

  • read() 每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。
  • readlines() 之间的差异是后者一次读取整个文件,像 .read() 一样。.readlines() 自动将文件内容分析成一个行的列表,该列表可以由 Python 的 for ... in ... 结构进行处理。

       .  readline() 每次只读取一行,通常比readlines() 慢得多。仅当没有足够内存可以一次读取整个文件时,才应该使用 readline()。

写文件

写文件和读文件是一样的,唯一区别是调用open()函数时,传入标识符'w'

>>> f = open('test.txt', 'w') 
>>> f.write('Hello, world!')
>>> f.close()

注意:'w'这个模式是酱紫:如果没有这个文件,就创建一个;如果有,那么就会先把原文件的内容清空再写入新的东西。所以若不想清空原来的内容而是直接在后面追加新的内容,就用'a'这个模式。

我们可以反复调用write()来写入文件,但是务必要调用f.close()来关闭文件。当我们写文件时,操作系统往往不会立刻把数据写入磁盘,而是放到内存缓存起来,空闲的时候再慢慢写入。只有调用close()方法时,操作系统才保证把没有写入的数据全部写入磁盘。忘记调用close()的后果是数据可能只写了一部分到磁盘,剩下的丢失了。所以,还是用with语句来得保险:

with open('test.txt', 'w') as f:
    f.write('Hello, world!')

python文件对象提供了两个“写”方法: write() 和 writelines()。

  • write()方法和read()、readline()方法对应,是将字符串写入到文件中。
  • writelines()方法和readlines()方法对应,也是针对列表的操作。它接收一个字符串列表作为参数,将他们写入到文件中,换行符不会自动的加入,因此,需要显式的加入换行符。
python基础(三) 随笔 第1张
f1 = open('test1.txt', 'w')
f1.writelines(["1", "2", "3"])
#    此时test1.txt的内容为:123

f1 = open('test1.txt', 'w')
f1.writelines(["1\n", "2\n", "3\n"])
#    此时test1.txt的内容为:
#    1
#    2        
#    3
python基础(三) 随笔 第2张

 

truncate函数:
f = open('name.txt','a+',encoding='utf-8')
f.seek(0)
print(f.tell())#告诉你当前指针的位置
f.readline()#读取某一行内容
f.truncate()#从当前指针位置清空内容

 

关于open()的mode参数

'r':读,文件不存在读取报错

'w':写,文件不存在时帮你创建,但是不能读,会清空原来文件的内容

'a':追加,追加模式,不会清空原来的内容,但是不能读

'r+' == r+w(可读可写,文件若不存在就报错(IOError))

'w+' == w+r(可读可写,文件若不存在就创建,会清空原来文件的内容)

'a+' ==a+r(可追加可写,文件若不存在就创建,读不到东西)

总结:只要有r的文件不存在都会报错,只要有w的文件内容都会被清空

字符编码

要读取非UTF-8编码的文本文件,需要给open()函数传入encoding参数,例如,读取utf-8编码的文件:

>>> f = open('test.txt', 'r', encoding='utf-8')
>>> f.read()
'测试'

遇到有些编码不规范的文件,你可能会遇到UnicodeDecodeError,因为在文本文件中可能夹杂了一些非法编码的字符。遇到这种情况,open()函数还接收一个errors参数,表示如果遇到编码错误后如何处理。最简单的方式是直接忽略:

>>> f = open('test.txt', 'r', encoding='utf-8', errors='ignore')

 读取的文件我们是直接放到内存中,如果某个文件过大,一下子读取会占用过多的内存,此时我们可以一行一行进行读取:

 

with open('name.txt','a+',encoding='utf-8') as f:
for line in f:
print(line)#打印出每行的数据

 

监控服务日志:

 

扫码关注我们
微信号:SRE实战
拒绝背锅 运筹帷幄