From c81c1656f78f5f8f97081830c1d722d4809ffb37 Mon Sep 17 00:00:00 2001 From: Nasy Date: Tue, 5 Mar 2019 18:44:25 +0800 Subject: [PATCH 1/2] Fixes #8 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 讲真,就上面那个非 lazy 的 get_lines 也不应该用 append,直接 return f.readlines() 不就可以了... --- README.md | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 7e2b0bf..338dcf2 100644 --- a/README.md +++ b/README.md @@ -291,11 +291,9 @@ 现在要处理一个大小为10G的文件,但是内存只有4G,如果在只修改get_lines 函数而其他代码保持不变的情况下,应该如何实现?需要考虑的问题都有那些? ``` def get_lines(): - l = [] with open('file.txt','rb') as f: - data = f.readlines(60000) - l.append(data) - yield l + for l in f: + yield l ``` 要考虑的问题有:内存只有4G无法一次性读入10G文件,需要分批读入分批读入数据要记录每次读入数据的位置。分批每次读取数据的大小,太小会在读取操作花费过多时间。 ## 1.2 补充缺失的代码 @@ -1136,4 +1134,4 @@ Web browsable API对开发者有极大的好处 支持ORM和非ORM数据资源的序列化 全程自定义开发--如果不想使用更加强大的功能,可仅仅使用常规的function-based views额外的文档和强大的社区支持 ## 2.19 对cookies与session的了解?他们能单独用吗? -Session采用的是在服务器端保持状态的方案,而Cookie采用的是在客户端保持状态的方案。但是禁用Cooki就不能得到Session。因为Session是用Session ID来确定当前对话所对应的服务器Session,而Session ID是通过Cookie来传递的,禁用Cookie相当于SessionID,也就得不到Session。 \ No newline at end of file +Session采用的是在服务器端保持状态的方案,而Cookie采用的是在客户端保持状态的方案。但是禁用Cooki就不能得到Session。因为Session是用Session ID来确定当前对话所对应的服务器Session,而Session ID是通过Cookie来传递的,禁用Cookie相当于SessionID,也就得不到Session。 From b2a175d76cf4eaae1f9cc51fe4b17de186654c23 Mon Sep 17 00:00:00 2001 From: Nasy Date: Tue, 5 Mar 2019 21:47:28 +0800 Subject: [PATCH 2/2] Compliance with convention. MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 变量和函数名遵循 pep8 https://www.python.org/dev/peps/pep-0008/#function-and-variable-names 不使用 `mixedCase` --- README.md | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/README.md b/README.md index 338dcf2..2acd83a 100644 --- a/README.md +++ b/README.md @@ -305,12 +305,12 @@ 以及其包含文件夹中文件的路径 """ import os - for sChild in os.listdir(sPath): - sChildPath = os.path.join(sPath,sChild) - if os.path.isdir(sChildPath): - print_directory_contents(sChildPath) + for s_child in os.listdir(s_path): + s_child_path = os.path.join(s_path, s_child) + if os.path.isdir(s_child_path): + print_directory_contents(s_child_path) else: - print(sChildPath) + print(s_child_path) ``` # 模块与包 ## 2.1 输入日期, 判断这一天是这一年的第几天? @@ -500,7 +500,7 @@ New 是真正创建实例对象的方法,所以重写基类的new 方法,以 ``` import os - def getFiles(dir,suffix): + def get_files(dir,suffix): res = [] for root,dirs,files in os.walk(dir): for filename in files: @@ -510,7 +510,7 @@ New 是真正创建实例对象的方法,所以重写基类的new 方法,以 print(res) - getFiles("./",'.pyc') + get_files("./",'.pyc') ``` 第二种方法: ```