Python 小栈_07:Python 其他内置函数和文件处理

今日所学:

一、其他内置函数

1、zip的用法:将序列中的元素串联起来,一一对应

注意:zip中有两个参数,都为序列,需一一对应

a={"name":"apple","age":"18","gender":"male"}
print(list(zip(a.keys(),a.values())))

>>>[('name', 'apple'), ('age', '18'), ('gender', 'male')]

b
=("12345","hello") print(list(zip("12345","hello")))

>>>[('1', 'h'), ('2', 'e'), ('3', 'l'), ('4', 'l'), ('5', 'o')]

2、max和min的用法:查找最大最小值。

max的高级应用:
age_li
={ "apple":16, "banana":19, "cat":34, "dog":70 } print(max(age_li))--->>若直接这样,打印的是字典key的最大值 print(max(zip(age_li.values(),age_li.keys())

注意:max中的参数需为可迭代对象,依次从第一个位置开始进行for循环,找到最大的之后就不再往后找了。
1、max函数处理的是可迭代对象,相当于一个for循环取出里面的额每个元素进行比较,注意:不同数据类型之间不能进行比较;
2、每个元素进行比较,从每个元素的第一个位置开始比较,如果这个位置分出大小,后面的就无须进行比较了.

a=["a12","a43","c23"]

print(max(a))

c=[
    {"name": "apple", "age": 100},
    {"name": "banana", "age": 45},
    {"name": "cat", "age": 56},
    {"name": "gog", "age": 19},

]

print(max(c,key=lambda dic:dic["age"]))

>>>{'name': 'apple', 'age': 100}

3、slice用法:切片,相当于[n:m]切片

l=[1,3,5,7]
s1=slice(2,5)
print(l[s1])

4、sorted用法:排顺序,本质上就是比较大小。不同数据类型之间不能比较大小

c=[
    {"name": "apple", "age": 100},
    {"name": "banana", "age": 45},
    {"name": "cat", "age": 56},
    {"name": "gog", "age": 19},
]
print(sorted(c,key=lambda dic:dic["age"]))

>>>[{'name': 'gog', 'age': 19}, {'name': 'banana', 'age': 45}, {'name': 'cat', 'age': 56}, {'name': 'apple', 'age': 100}]

5、sum 用法:求和。后面参数为可迭代对象。

l=[1,2,3,4]
print(sum(l))
print(sum(range(101)))---->可求出1-100的和

6、type用法:查看数据类型,可用于程序中做判断,然后根据不同数据类型,执行不同的逻辑。

msg="123"
if type(msg) is str:
    msg=int(msg)
    res=msg+1
    print(res)

7、import用法:调用其他py文件模块,只需输入文件名(不用.py),注意:不能为字符串

import text
text.say_hi()
__import__("text")--->这个可以导入str。

ps:在计算机底层实际调用的就是_import_()。

二、文件处理

(一)文件处理流程

计算机系统分为:计算机硬件,操作系统,应用程序三部分。

我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周知,应用程序是无法直接操作硬件的,这就用到了操作系统。操作系统把复杂的硬件操作封装成简单的接口给用户/应用程序使用,其中文件就是操作系统提供给应用程序来操作硬盘虚拟概念,用户或应用程序通过操作文件,可以将自己的数据永久保存下来。

有了文件的概念,我们无需再去考虑操作硬盘的细节,只需要关注操作文件的流程:

1. 打开文件,得到文件句柄并赋值给一个变量
2. 通过句柄对文件进行操作
3. 关闭文件
形式:文件句柄 = open('文件路径', '模式')
f=open("text.py","r",encoding="utf8")--->得到文件句柄
data=f.read()--->赋值给一个变量
print(data)  --->并对其进行读操作
f.close()--->关闭文件

注意:打开一个文件包含两部分资源:操作系统级打开的文件+应用程序的变量。
在操作完毕一个文件时,必须把与该文件的这两部分资源一个不落地回收,回收方法为:
1、f.close() #回收操作系统级打开的文件
2、del f #回收应用程序级的变量

其中del f一定要发生在f.close()之后,否则就会导致操作系统打开的文件还没有关闭,白白占用资源,
而python自动的垃圾回收机制决定了我们无需考虑del f,但在操作完毕文件后,一定要记住f.close()

with open("text.py","r",encoding="utf8" as f:  --->可用with来代替关闭文件的操作,不用close操作
    pass
with open("a_py","r") as read_f,open("b_py","w") as write_f:  --->可打开多个文件
    data=read_f.read
    wirte_f.write(data)

(二)open和file

在python3中只有open()

在python2中有open()和file()

注意:file为文件类;用file()来打开文件,相当于这是在构造文件类。而用open()打开文件,是用python的内建函数来操作。一般用open。

(三)只读、只写、追加

r ,只读模式【默认模式,文件必须存在,不存在则抛出异常】

w,只写模式【不可读;不存在则创建空文档;存在则清空内容】

a, 之追加写模式【不可读;不存在则创建空文档;存在则只追加内容】

r+, 读写【可读,可写】

w+,写读【可读,可写】

a+, 写读【可读,可写】

f.read() #读取所有内容,光标移动到文件末尾
f.readline() #读取一行内容,光标移动到第二行首部
f.readlines() #读取每一行内容,存放于列表中
f.readable() #文件是否可读
f.writable() #文件是否可读
f.write('1111\n222\n') #针对文本模式的写,需要自己写换行符 
f.write('1111\n222\n'.encode('utf-8')) #针对b模式的写,需要自己写换行符
f.writelines(['333\n','444\n']) #文件模式
f.writelines([bytes('333\n',encoding='utf-8'),'444\n'.encode('utf-8')]) #b模式
with open("text.py","r",encoding="utf8") as f:
    print(f.readable())
    print(f.read())
    print(f.readlines())

f=open("text.py","w",encoding="utf8")
data=f.write("1234545656\n")---->写入行,用str,记得用换行符隔开
f.close()

f=open("text.py","w",encoding="utf8")
data=f.writelines(["1234545656\n","yidsaksfhsak\n","ashdihifhih\n"])--->写多行时要用列表形式写入
f.close()


f=open("text.py","a",encoding="utf8")
data=f.writelines(["1234545656\n","yidsaksfhsak\n","ashdihifhih\n"])--->追加写在文件的最后,追加就相当于写,可调用write的函数
f.close()


with open("text.py","r") as read_f,open("text.py","w") as write_f:   --->以这种方式把文件既打开读模式,又打开写模式,即可对文件进行覆盖(修改即覆盖)
data=read_f.read()
write_f.write("sdhfdshgkjsdhgh\n")

  

以上。

猜你喜欢

转载自www.cnblogs.com/211293dlam/p/12469216.html