函数的内置函数(文件)
一、文件操作:
1、打开文件(普通):
f=open("text","r") #只读
f=open("text","w") #只写,先清空原文件
f=open("text","x") #如果文件存在报错,不存在创建新文件并写内容
f=open("test","a") #追加
实例:
1 f=open("text","r",encoding="utf-8") 2 data=f.read() 3 print(data,type(data)) 4 f.close()
2、打开文件(b):
以字节的方式打开文件,输入,输出也都为字节。
实例:
1 f=open("text","ab") 2 f.write(bytes("理解“,encoding="utf-8")) 3 f.close()
3、打开方式(+):
r+ 读写
w+ 写读
x+ 写读
a+ 写读
4、操作文件:
read():无参数,读全部
有b,按字节
无b,按字符
write():写数据
有b,写字节
无b,写字符
seek():调整指针位置,在当前位置继续往后写,把后面的重复的位置覆盖。(按照字节的位置)
tell():获取当前指针的位置
实例:
1 f=open("text","r+",encoding="utf-8") 2 data=f.read(1) #如果打开方式无b,则read按字符读取,read()填写的数字代表字节个数 3 print(f.tell()) #tell当前指针所在的位置(字节) 4 f.seek(f.tell()) #调整当前指针的位置(字节) 5 f.write("guido") #当前指针开始向后覆盖 6 f.close()
close():关闭文件
flush():强刷,程序未执行完,不会把内容写入硬盘,加flush会强刷入硬盘。
readable():是否可读
seekable():指针是否可操作
readline():仅读取一行
writeable():是否可写
truncate():保留指针前面的内容,清空后面的内容
for循环文件对象
1 f=open("text","r",encoding="utf-8") 2 for line in f: 3 print(line)
把文件逐行进行操作
5、关闭文件:
1 f.close()
1 with open("text","r",encoding="utf-8") as f,open("text1","r",encoding="utf-8") as f1: 2 #打开文件执行完后自动关闭 3 items=0 4 for line in f: 5 items += 1 6 if items<10: 7 f1.write(line) 8 else: 9 break
实例:
1 with open("text1,"r",encoding="utf-8") as f1,open("text2","w",encoding="utf-8") as f2: 2 for line in f1: 3 new_str=line.replace("Guido","st") 4 f2.write(new_str)
二、其他内置函数:
1、callable():
检测函数是否会被执行
2、chr()
进制的数转换为ascii码表对应的大写字母
ord()
把小写字母转换为ascii码表对应的十进制数
实例:
1 import random 2 li=[] 3 for i in range(6): 4 r=random.randrange(0,5) 5 if r==2 or r==4: 6 num=random.randrange(0.10) 7 li.append(str(num)) 8 else: 9 temp=random.randrange(65,91) 10 c=chr(temp) 11 li.append(c) 12 result="*".join(li) 13 print(result)
3、compile():
把字符串编译成python代码
eval():
执行表达式,可返回结果给eval()
用来计算存储在字符串中的有效的Python表达式。
>>>eval("2*3") 6
exec():
可执行python的所有代码或字符串,没有返回值
exec语句用来执行存储在字符串或文件中的Python语句。例如,我们可以在运行时生成一个包含Python代码的字符串,然后使用exec语句执行这些语句。
>>>exec(print("hello world")) hello world
1 s="print(123)" 2 r=compile(s,"<string>","exec") #把字符串编译成python代码,<string>可以换成文件名称 3 exec(r) #执行python代码
4、dir():
查看对象提供的功能
help():
提供对象提供的功能的详细说明
5、divmod():
两值相除,返回tuple(整数,余数)
1 r=divmod(100,9) 2 n1,n2=divmod(100,9) 3 print(r[0],r[1]) 4 print(n1,n2)
6、isinstance():
该对象是否是该对象的实例
1 s=[11,22,33,] 2 r=isinstance(s,list) 3 print(r)
7、filter():
做筛选返回True,将元素添加到结果
实例:
1 # filter(函数,可迭代的对象) 2 def f2(a): 3 if a>22: 4 return True 5 li=[11,22,33,44,55] 6 # filer内部循环第二个参数 7 # result=[] 8 # for item in 第二个参数: 9 # r=第一个参数(函数item) 10 # if r: 11 # result(item) 12 # return result 13 # filter,循环第二个参数,让每个循环元素执行函数,如果函数返回值True表示元素合法 14 ret=filter(f2,li) 15 print(list(ret))
与filter功能相同:
1 def f1(args): 2 result=[] 3 for item in args: 4 if item>22: 5 result.append(item) 6 return result 7 li=[11,22,33,44,55] 8 ret=f1(li) 9 print(ret)
另一种:lambda表达式
1 li=[11,22,33,44,55] 2 result=filter(lambda a:a>33,li) 3 print(list(result))
map():对一个可迭代的对象批量做一项操作,将函数的返回值添加到结果中
1 li=[11,22,33,44,55] 2 # map(函数,可迭代的对象) 3 # def f2(a): 4 # return a+10 5 # result=map(f2,li) 6 result=map(lambda a:a+100,li) 7 print(list(result))
不用map函数:
1 11,22,33,44,55] 2 def f1(args): 3 result=[] 4 for i in args: 5 result.append(100+i) 6 return result 7 r=f1(li) 8 print(list(r))
8、float():
转换数字为浮点数
9、format():
格式化
10、globals():
全局变量
locals():
局部变量
1 name=989908908 2 def show(): 3 a=123 4 b=123 5 print(locals()) 6 print(globals()) 7 show()
11、hash():
内部使用转换为哈希值
12、id():
查看内存地址
13、len():
查看对象长度(在python3中按字符查看,在python2中按字节查看)
14、max():
求最大值
min():
求最小值
sum():
求和
r=max([11,22,33,44,55])
15、pow():
2**10同pow(2,10)一样
16、reversed(list):
等同list.(reverse)
17、round():
四舍五入
18、slice():
等同于切片功能
19、sort(list):
排序,等同于li.sort()
20、vars():
当前模块里都有哪些变量
21、zip():
按序连接每个list里的项
实例:利用zip实现以下功能
1 l1=["Guido",22,33,44] 2 l2=["is",22,33,44] 3 l3=["my",22,33,44] 4 l4=["idol",22,33,44] 5 # 获取s=("Guido_is_my_idol") 6 r=zip(l1,l2,l3,l4) 7 temp=list(r)[0] 8 ret="_".join(temp) 9 print(ret)