Python之旅的第3²天(内置函数文件基本打开关闭)

Posted 崆峒山肖大侠

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python之旅的第3²天(内置函数文件基本打开关闭)相关的知识,希望对你有一定的参考价值。

今天其实遇到了一些不顺心的事情,耽搁了学习进程,但最终来说,老天爷是懂你的,今天心情不好,内容不多,但是是真他妹的难啊,测试出来的东西又和看的不一样,但愿能和昨天一样,一觉睡醒,结果正常了,哈哈哈。

上干货,内置方法:

abs 取绝对值
# print(abs(-1))  #---->结果得:1
# 
# all 对可迭代对象中每个元素进行bool运算,全部为True或可迭代对象为空返回True
# test = [\'alex\',\'10\']
# print(all(test))   #返回结果为True
# test1 = []
# print(all(test1))  #返回结果为True
# test2 = [\'\',18]
# print(all(test2))  #返回结果为Flase
# 
# any 对可迭代对象中每一个进行bool运算,只要其中一个为真,则返回True
# 与上面的all正好相反
# test = [\'\',18]
# print(any(test))   #返回结果为True
# test1 = [\'\',{},0]
# print(any(test1)   #返回结果为Flase
# 
# bin 十进制转为二进制
# hex 十进制转为十六进制
# oct 十进制转为八进制
# n = 2020
# # print(bin(n))    #0b11111100100  0b表示二进制数
# # print(hex(n))    #0x7e4          0x表示十六进制数
# # print(oct(n))    #0o3744         0o表示八进制数
# 
# #bytes 将字符串转换为字节形式
# name = \'你好\'
# n = bytes(name,encoding = \'utf-8\')
# print(n)   #encoding表示转换为字节形式对应的码表
# #结果为b\'\\xe4\\xbd\\xa0\\xe5\\xa5\\xbd\'
# 
# #decode 将字节转换为文字,与上面bytes正好相反,转码解码参考一定要一样哦
# test_name = n.decode(encoding = \'utf-8\')
# print(test_name)
# 
# chr 输出数字对应的ASCII码
# print(chr(98))  #输出结果为b
# 
# dict 字典
# dir 显示某一对象下面的方法
# print(dir(tuple))   #---->输出元组对象下的所有方法
# 
# divmod 同时计算商和余数
# print(divmod(10,3))  #------>输出结果为(3, 1)
# 
# eval 提取字符串中包含的数据结构
# test = "{\'name\':\'alex\',\'age\':\'18\'}"
# print(eval(test))   #----->{\'age\': \'18\', \'name\': \'alex\'}
# n = dict(eval(test))  #eval出来的是一个迭代器,稍微转一下才能正式调用方法
# for k , v  in n.items():
#     print(k,v)      #此时n便成为一个可迭代的字典
# #获取了其中包含的字典数据类型
# str_test = \'1+2*(3/3-1)-2\'
# n = eval(str_test)
# print(n)     #---->得到运算结果-1.0
# 
# float 返回浮点值
# 
# hash 对可哈希的不可变类型进行哈希运算
# hash值的特点:固定不可变,不随字符串长度增加而明显增加,无法根据hash值反推文本内容,内容不变hash不会改变(可用于文件检测)
# 
# help 查看某一方法的详细使用解释
# print(help(map))   #输出内置函数map的解释,全是英文,我表示看不懂
# 
# isinstance 判断数据是否为对应数据类型
# print(isinstance(\'hello,world\',str))    #返回结果为True
# 
# locals  显示当前所有的局部变量
# globals 显示当前所有的全局变量
# 
# zip 使两个可迭代对象一一对应,两个元素个数不同时,以少的为准,对应完了就结束了
# a = [\'a\',\'b\',\'c\',\'d\']
# b = [1,2,3]
# print(list(zip(a,b)))  #输出结果:[(\'a\', 1), (\'b\', 2), (\'c\', 3)]
# 也可以使字典中k,v值一一对应
# test = {\'age\': \'18\', \'name\': \'alex\'}
# print(list(zip(test.keys(),test.values())))   #输出结果:[(\'age\', \'18\'), (\'name\', \'alex\')]
# 
# max 求出最大值的作用
# 两个特点:输入可迭代对象,不同类型不能进行比较,默认从第一个值开始比较,如分出结果就不继续比下去了
# 相当于做了一个for循环进行挨个比较
# 
# max的初级阶段使用
# list_test = [1,24,56,3,100]
# print(max(list_test))   #输出结果100
# 
# max的中级使用
# list_test = [(\'a\', 1), (\'b\', 2), (\'c\', 1)]
# print(max(list_test))   #输出结果为(\'c\', 1)
# 
# 接下来是max的高阶模式,字典中比较数据
# pep_list = {\'alex\':18,\'zjl\':20,\'axin\':40,\'zhaolei\':18}
# print(list(max((zip(pep_list.values(),pep_list.keys())))))
# 输出结果为[40,\'axin\']
# 
# max的最高级玩法,可以在后面输入方法
# 需求:求出下面字典中年龄最大的人
# list_test = [
#     {\'name\':\'alex\',\'age\':18},
#     {\'name\':\'zjl\' ,\'age\':28},
#     {\'name\':\'zhao\',\'age\':33},
#     {\'name\':\'kobe\',\'age\':40},
# ]
# 
# print(max(list_test,key = lambda dic : dic[\'age\']))
# 输出结果为{\'name\': \'kobe\', \'age\': 40}
# 
# 此处lambda dic : dic[\'age\']的作用是将list_test中每个元素(即字典)中age对应的数值取出来
# 和下面的循环是一个意思
# rec = []
# for item in list_test:
#     rec.append(item[\'age\'])
# print(rec)    #取出了list_test中所有age对应的值
# 
# reversed 反转序列
# test = [1,2,3,4]
# print(list(reversed(test)))    #输出结果:[4, 3, 2, 1]
# print(test)            #输出结果:[1, 2, 3, 4]
# 
# ord 输出字符对应的ASCII码
# pow 可填写两个或三个参数
# print(pow(2,3))   #输出结果为8,等同于2的3次方
# print(pow(2,3,3))  #输出结果为2,等同于2的3次方,再除以3取余
# 
# round 对小数进行四舍五入
# print(round(4,436))  #输出结果为4
# 
# slice 切片保存   slice(起始,结束,步长)
# l = \'hello\'
# s1 = slice(3,5,1)   #把切片保存到s1
# print(l[s1])    #输出结果为\'lo\',等同于l[3,5]
# 
# sorted 排序,执行过程类似于max和min,默认从小到大排序,不同类型不能排序,其本质就是比大小
# sorted 也是可以导入方法的
# list_test = [
#     {\'name\':\'alex\',\'age\':40},
#     {\'name\':\'zjl\' ,\'age\':28},
#     {\'name\':\'zhao\',\'age\':18},
#     {\'name\':\'kobe\',\'age\':40},
# ]
# print(list(sorted(list_test,key = lambda dic : dic[\'age\'])))
# 
# sum 对可迭代对象进行求和
# type 查看数据对应的类型
# vars 没有参数时显示本地变量,或将所有方法对应为字典输出
# print(vars())   #用到的时候再详细补充
# __impot__ 导入文件,可导入字符串类型,import不能导入,但最终import都是引入了__import__

下面是介绍了几个简单的文件入门操作:

#文件的读取、书写、追加以及r+模式可读可写(建议浏览:https://www.cnblogs.com/linhaifeng/articles/5984922.html)
#r:只读  w:只写   a:追加   r+:可读可写

# 读取文件测试
# f = open(\'test\',\'r\',encoding = \'utf-8\')  #注意设置读取所参考的编码表
# test_r = f.read()    #读取文件内容
# print(test_r)
# print(f.readable())   #查看文件是否可读  返回True
#                       #文件从前到后只读取一次,前面出现了f.read,则此处光标已经在文档最后了
# print(\'第一行的内容是:\',f.readline(),end = \'\')   #只读取文件中的一行内容,同时光标下移
# print(\'第二行的内容是:\',f.readline(),end = \'\')
# f.close()

# 写入文件的测试
# 写入文件的内容必须都是字符串的形式,不然系统就会报错
# f = open(\'test\',\'w\',encoding = \'utf-8\')   #此处所输入的文件名如果在本级列表存在,则覆盖掉原有文件
#                                           #如果不存在则新创建一个文件
# print(f.writable())        #显示文件是否可写入  返回True
# f.write(\'hello world\\n\')   #写入内容
# f.writelines([\'alex\\n\',\'zhaolei皮一下\',\'zhoujielun\\n\',\'kobe\'])   #貌似只有这个地方才可以传入列表
# f.close()

# 追加模式的操作(常用来作为访问日志,可用于记录网站访问的日志)
# f = open(\'test\',\'a\',encoding = \'utf-8\')
# print(f.readable())    #返回值为False
# f.write(\'第二行修改了\')    #追加模式不能进行文件读取,将所输入的内容追加在文件最后
# f.close()

# r+可读可写模式
# f = open(\'test\',\'r+\',encoding = \'utf-8\')
# print(f.readable())    #可被读取,返回True
# print(f.writable())    #可被写入,返回True
#
# print(\'第一行的内容:\',f.readline(),end = \'\')   #此时读取光标已经移动到第二行
# f.writelines(\'第二行前面皮一下\\n\')    #为什么只读取了一行,补充书写就到了最后面呢
#                                      #写入方式为直接覆盖的方式
# f.close()

#with自动打开和关闭
#书写格式
# with open(\'test\',\'r\',encoding = \'utf-8\') as f ,\\
#     open(\'text_new\',\'w\',encoding = \'utf-8\') as d:
#     test_l = f.read()
#     print(test_l)   #不能直接打印f.read,出现了指针地址

睡觉喽。。。

以上是关于Python之旅的第3²天(内置函数文件基本打开关闭)的主要内容,如果未能解决你的问题,请参考以下文章

Python之旅的第15天(osjsonsys模块,模块引入补充)

Python之旅的第2^4天(shelvexml模块和re模块部分)

Python之旅的第19天(类的初识)

Python之旅的第30天(过程记录,选课系统的基本实现)

Python之旅的第17天(re模块logging模块)

Python学习之旅 —— 基础篇内置函数装饰器