推荐系统开发实战_代码2-1
2020/5/26
最近开始学习推荐系统开发实战这本书,这是学习的第⼀个python程序,⾥⾯有很多地⽅需要做笔记。
1、python 中os模块 ists() 含义
os.path模块主要⽤于⽂件的属性获取,exists是“存在”的意思,所以顾名思义,ists()就是判断括号⾥的⽂件是否存在的意思,括号内的可以是⽂件路径。如果不存在,返回的则是FALSE。
2、Python os.listdir() ⽅法
os.listdir() ⽅法⽤于返回指定的⽂件夹包含的⽂件或⽂件夹的名字的列表。
3、Python format 格式化函数
4、Python中 with open ( file_abs, 'r' ) as f : 的⽤法以及意义
要以读⽂件的模式打开⼀个⽂件对象,使⽤Python内置的open()函数,传⼊⽂件名和标⽰符:
标⽰符 'r' 表⽰读,这样我们就成功地打开了⼀个⽂件。
如果⽂件不存在,open() 函数就会抛出⼀个IOError 的错误,并且给出错误码和详细的信息告诉你⽂件不存在:
如果⽂件打开成功,接下来,调⽤read()⽅法可以⼀次读取⽂件的全部内容,Python把内容读到内存,⽤⼀个str对象表⽰:
最后⼀步是调⽤close()⽅法关闭⽂件。⽂件使⽤完毕后必须关闭,因为⽂件对象会占⽤操作系统的资源,并且操作系统同⼀时间能打开的⽂件数量也是有限的:
由于⽂件读写时都有可能产⽣IOError,⼀旦出错,后⾯的f.close()就不会调⽤。所以,为了保证⽆论是否出错都能正确地关闭⽂件,我们可以使⽤try ... finally来实现:
每次都这么写实在太繁琐,所以,Python引⼊了with语句来⾃动帮我们调⽤close()⽅法:
这和前⾯的try ... finally是⼀样的,但是代码更佳简洁,并且不必调⽤f.close()⽅法。
调⽤read()会⼀次性读取⽂件的全部内容,如果⽂件有20G,内存就爆了,所以,要保险起见,可以反复调⽤read(size)⽅法,每次最多读取size个字节的内容。
另外,调⽤readline()可以每次读取⼀⾏内容,调⽤readlines()⼀次读取所有内容并按⾏返回list。因此,要根据需要决定怎么调⽤。
如果⽂件很⼩,read()⼀次性读取最⽅便;如果不能确定⽂件⼤⼩,反复调⽤read(size)⽐较保险;如果是配置⽂件,调⽤readlines()最⽅便:
写⽂件:
写⽂件和读⽂件是⼀样的,唯⼀区别是调⽤open()函数时,传⼊标识符'w'或者'wb'表⽰写⽂本⽂件或写⼆进制⽂件:
可以反复调⽤write()来写⼊⽂件,但是务必要调⽤f.close()来关闭⽂件。当我们写⽂件时,操作系统往往不会⽴刻把数据写⼊磁盘,⽽是
放到内存缓存起来,空闲的时候再慢慢写⼊。只有调⽤close()⽅法时,操作系统才保证把没有写⼊的数据全部写⼊磁盘。忘记调⽤close()的后果是数据可能只写了⼀部分到磁盘,剩下的丢失了。所以,还是⽤with语句来得保险:
要写⼊特定编码的⽂本⽂件,请给open()函数传⼊encoding参数,将字符串⾃动转换成指定编码。要读取⾮UTF-8编码的⽂本⽂件,需要给open()函数传⼊encoding参数,例如,读取GBK编码的⽂件:
遇到有些编码不规范的⽂件,你可能会遇到UnicodeDecodeError,因为在⽂本⽂件中可能夹杂了⼀些⾮法编码的字符。遇到这种情
况,open()函数还接收⼀个errors参数,表⽰如果遇到编码错误后如何处理。最简单的⽅式是直接忽略:
5、Python strip()⽅法
Python strip() ⽅法⽤于移除字符串头尾指定的字符(默认为空格或换⾏符)或字符序列。
6、Python3 endswith()⽅法
endswith() ⽅法⽤于判断字符串是否以指定后缀结尾,如果以指定后缀结尾返回 True,否则返回 False。
Python startswith()⽅法
Python startswith() ⽅法⽤于检查字符串是否是以指定⼦字符串开头,如果是则返回 True,否则返回 False。
7、Python split()⽅法
Python split() 通过指定分隔符对字符串进⾏切⽚,如果参数 num 有指定值,则分隔 num+1 个⼦字符串
8、Python的random.sample
⽤于从 list(users)中随机抽取1000个数据,⽣成新的列表 users_1000
9、python中的随机数种⼦seed()
给随机数对象⼀个种⼦值,⽤于产⽣随机序列。
对于同⼀个种⼦值的输⼊,之后产⽣的随机数序列也⼀样。
通常是把时间秒数等变化值作为种⼦值,达到每次运⾏产⽣的随机系列都不⼀样
seed() 省略参数,意味着使⽤当前系统时间⽣成随机数。
10、json 中的 load、loads、dump、dumps分别是什么?
dump 和 dumps 都实现了序列化
load 和 loads 都实现反序列化
变量从内存中变成可存储或传输的过程称之为序列化,序列化是将对象状态转化为可保存或可传输格式的过程。 变量内容从序列化的对象重新读到内存⾥称之为反序列化,反序列化是流转换为对象。
load 和 loads (反序列化)
load:针对⽂件句柄,将json格式的字符转换为dict,从⽂件中读取 (将string转换为dict)
loads:针对内存对象,将string转换为dict (将string转换为dict)
dump 和 dumps(序列化)
dump:将dict类型转换为json字符串格式,写⼊到⽂件(易存储)
dumps:将dict转换为string (易传输)
11、Python 字典(Dictionary)
(1)setdefault() ⽅法
如果字典中包含有给定键,则返回该键对应的值,否则返回为该键设置的值。python json字符串转数组
(2)dict.keys() ⽅法:获取所有的 key 值
(3)dict.items() ⽅法:以列表返回可遍历的(键, 值) 元组数组。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论