python基础(三)
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()方法对应,也是针对列表的操作。它接收一个字符串列表作为参数,将他们写入到文件中,换行符不会自动的加入,因此,需要显式的加入换行符。

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

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)#打印出每行的数据
监控服务日志:
