Python的元组与列表(List)类似,不同之处在于元组一旦被定义里面的元素不能修改,字符串也是不能被修改的。
元组定义使用小括号,列表使用方括号。
元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。
正常我们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 # 3truncate函数: f = open('name.txt','a+',encoding='utf-8')f.seek(0)print(f.tell())#告诉你当前指针的位置f.readline()#读取某一行内容f.truncate()#从当前指针位置清空内容
'r':读,文件不存在读取报错,r的文件指针是最前面
'w':写,文件不存在时帮你创建,但是不能读,会清空原来文件的内容
'a':追加,追加模式,不会清空原来的内容,但是不能读,a是不清空原来的内容添加内容,不能读
'r+' == r+w(可读可写,文件若不存在就报错(IOError))
'w+' == w+r(可读可写,文件若不存在就创建,会清空原来文件的内容)
'a+' ==a+r(可追加可写,文件若不存在就创建,读不到东西),a+不清空原来的内容追加添加内容,可读
总结:只要有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)#打印出每行的数据
切片取值字符串,list,元组都可以用
python中的切片操作功能十分强大,通常我们利用切片来进行提取list,字符串中某个范围的信息
切片是顾投不顾尾的,实例:
打印结果:
切片操作十分有用。我们先创建一个0-99的数列:
>>> L = list(range(100))#rang取0-99的一个list,rang(1-100)是取1到99的数列 >>> L [0, 1, 2, 3, ..., 99]可以通过切片轻松取出某一段数列。比如前10个数:
>>> L[:10] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]后10个数:
>>> L[-10:] [90, 91, 92, 93, 94, 95, 96, 97, 98, 99]前11-20个数:
>>> L[10:20] [10, 11, 12, 13, 14, 15, 16, 17, 18, 19]前10个数,每两个取一个:
>>> L[:10:2] [0, 2, 4, 6, 8]所有数,每5个取一个:
>>> L[::5] [0, 5, 10, 15, 20, 25, 30, 35, 40, 45, 50, 55, 60, 65, 70, 75, 80, 85, 90, 95]甚至什么都不写,只写[:]就可以原样复制一个list:
>>> L[:] [0, 1, 2, 3, ..., 99]
存在文件中的内容读取出来都是字符串,无论你文件中写的是字典或者数组,读出来都是字符串,write写的内容也只能是字符串
json是一个字符串,如果我们要把一个字典写到文件里面,我们正常是把字段转换为json再写入到文件中
json里面只有双引号没有单引号。
Json 模块提供了四个方法: dumps、dump、loads、load
字典转换为jsonjson.dump / json.dumps:把字典转换为json串,两者区别是dumps是字典转为json格式的字符串,dump直接把字典格式的文件转为json格式的字符串dump的第一个参数是对象字典,第二个参数是文件对象,可以直接将转换后的json数据写入文件,dumps的第一个参数是对象字典,其余都是可选参数。dump和dumps的可选参数相同,这些参数都相当实用,现将用到的参数记录如下:
ensure_ascii 默认为True,保证转换后的json字符串中全部是ascii字符,非ascii字符都会被转义。如果数据中存在中文或其他非ascii字符,最好将ensure_ascii设置为False,保证输出结果正常。
indent 缩进,默认为None,没有缩进,设置为正整数时,输出的格式将按照indent指定的半角空格数缩进,相当实用。##字典格式的内容写入到文件中需要3个步骤1.用dumps把字典转为json 2.打开一个文件 3.把内容写入到文件中
import json # 用json首先要导入jsonf = {"age": "10", "name": "dongmei"}res = json.dumps(f,indent=2,ensure_ascii=False) # 把字典转换为json,因为json是一个字符串,indent=2就是让json串前面有两个空格好看点,如果字典中有中文需要设置ensure_ascii=Fals a = open('name.txt', 'w',encoding='utf-8')a.write(res)#写的内容只能是字符串,所以先要把字典转换为字符串##如果用dump把字典格式的内容写入到文件中需要两个步骤:1.只要打开文件 2.内容写入文件就行了 import json # 用json首先要导入jsond={"age": "10", "name": "dongmei"}f=open('name.txt','w',encoding='utf-8')json.dump(d,f,indent=2,ensure_ascii=False) load/loads:json格式的字符串转为字典,两者区别,是loads是字符串转为字典,load是操作文件,可以直接把json格式的文件,直接转字典##把文件中的内容转为字典loads步骤分为3步:1.打开文件 2.读取文件 2.loads转为字典import jsonf =open('user.txt')res =f.read()#文件读取到的是json也就是字符串d =json.loads(res)#把json传串转换为字典print(d)#读到字典的格式内容##把文件中的内容转为字典load步骤分为2步:1.打开文件 2.load转为字典 f =open('user.txt',encoding='utf-8') res =json.load(f) print(res)集合天生可以去重,可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
集合去重
a =[1,2,3,1,4,5]result =set(a)#集合去重print(result)打印结果:{1, 2, 3, 4, 5}集合取交集
s =set()#定义空集合s1={1,2,3,4}s2={4,5,6,7}print(s1 & s2)#取交集#print(s1.intersection(s2)) #取交集 打印结果:{4}集合取并集
s1={1,2,3,4}s2={4,5,6,7}print(s1 | s2) #取并集 打印结果:{1, 2, 3, 4, 5, 6, 7}函数就是方法,可重复使用的,用来实现单一,或相关联功能的代码段。函数能提高应用的模块性,和代码的重复利用率。
你可以定义一个由自己想要功能的函数,以下是简单的规则:
函数代码块以 def 关键词开头,后接函数标识符名称和圆括号()。任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。函数的第一行语句可以选择性地使用文档字符串—用于存放函数说明。函数内容以冒号起始,并且缩进。return [表达式] 结束函数,选择性地返回一个值给调用方。不带表达式的return相当于返回 None。 def cala(a,b):#形参,形式参数 return a+b#返回值res= cala(1,2)#调用函数,实参,实际参数,res接受返回的值print(res 打印结果:3
转载于:https://www.cnblogs.com/dmbk/p/10710809.html
