第二阶段考试题
第二阶段考试题
-
一个大小为100G的文件 etl_log.txt,要读取文件中的内容,写出具体过程代码。
# 如果文件有很多行 with open('etl_log_txt',mode = "r",encoding = "utf-8") as f: for line in f: print(line)# 如果文件有很多行 import os file_size = os.path.getsize("etl_log_txt.txt") read_size = 0 with open("etl_log_txt.txt",mode="rb") as file_object: while read_size < file_size data = file_object.read(1) read_size += len(data) -
编写一个函数,这个函数接受一个文件夹名称作为参数,寻找文件夹中所有文件的路径并输入(包含嵌套)。
def get_file_path(folder_path): for base_path,folder_list,file_list in os.walk(folder_path): for file in file_list: file_path = os.path.join(base_path,file) print(file_path) get_file_path(r"D:\Desktop\Python\code\two\day16") -
以下的代码数据的结果是什么?
def extend_list(val,data=[]): data.append(val) return data list1 = extend_list(10) list2 = extend_list(123,[]) list3 = extend_list("a") print(list1,list2,list3) #[10,"a"] [123] [10,"a"] -
python代码获取命令行参数。
import sys sys.argv -
简述深浅拷贝?
- 浅拷贝 - 不可变类型:不拷贝 - 可变类型:只拷贝第一层 - 深拷贝 - 不可变类型:不拷贝 - 可变类型:所有层级的可变类型都拷贝 - 特殊的,元组中如果包含可变类型也会被拷贝 -
基于推导式一行代码生成1-100以内的偶数列表。
even_list = [i for i in rang9(1,101) if i % 2 == 0] print(v) -
请把以下函数转化为python lambda匿名函数
def add(x,y): return x+yadd = lambda x,y:x+y -
看代码写结果
def num(): return [lambda x: i * x for i in range(4)] result = [m(2) for m in num()] print(result)[6,6,6,6] -
列表推导式和生成器表达式 [i % 2 for i in range(10)] 和 (i % 2 for i in range(10)) 输出结果分别是什么?
[i % 2 for i in range(10)] # 得到一个列表,内部元素是 [0,1,0,1,0,1,0,1,0,1] (i % 2 for i in range(10)) # 得到一个生成器对象 -
写装饰器
# 写timer装饰器实现:计算fun函数执行时间,并将结果给 result,最终打印(不必使用datetime,使用time.time即可)。 import time import functools def timer(orgin): # @functools.wraps(orgin) def inner(*args,**kwargs): start_time = time.time() res = orgin(*args,**kwargs) end_time = time.time() total_time = end_time - start_time print(total_time) return total_time return inner @timer def func(): time.sleep(2) result = func() print(result) -
re的match和search区别?
match 从开头匹配 search 在整个字符串中进行匹配 他们均获取一个匹配成功的值。 -
什么是正则的贪婪匹配?或 正则匹配中的贪婪模式与非贪婪模式的区别?
贪婪匹配: 非贪婪匹配,尽量少的匹配字符(只要符合匹配条件就结束),特点是:? -
sys.path.append("/root/mods")的作用?
将路径加入到sys.path,那么项目中就可以直接导入/root/mods目录下的模块和包 -
写函数
有一个数据结构如下所示,请编写一个函数从该结构数据中返画由指定的 字段和对应的值组成的字典。如果指定字段不存在,则跳过该字段。 DATA = { "time": "2016-08-05T13:13:05", "some_id": "ID1234", "grp1": {"fld1": 1, "fld2": 2, }, "xxx2": {"fld3": 0, "fld4": 0.4, }, "fld6": 11, "fld7": 7, "fld46": 8 } fields:由"|"连接的以fld开头的字符串, 如fld2|fld7|fld29 def select(fields): print(DATA) return result# 有一个数据结构如下所示,请编写一个函数从该结构数据中返画由指定的 字段和对应的值组成的字典。如果指定字段不存在,则跳过该字段。 DATA = { "time": "2016-08-05T13:13:05", "some_id": "ID1234", "grp1": {"fld1": 1, "fld2": 2, }, "xxx2": {"fld3": 0, "fld4": 0.4, }, "fld6": 11, "fld7": 7, "fld46": 8 } fields:由"|"连接的以fld开头的字符串, 如fld2|fld7|fld29 def select(fields): print(DATA) return result -
编写函数,实现base62encode加密(62进制),例如:
内部维护的数据有:0123456789AB..Zab..z(10个数字+26个大写字母+26个小写字母)。 当执行函数: base62encode(1),获取的返回值为1 base62encode(61),获取的返回值为z base62encode(62),获取的返回值为10 -
基于列表推导式一行实现输出9*9乘法表。
for i in range(1,10): for j in range(1,i+1): print("{}*{} ".format(i,j),end="") print()
浙公网安备 33010602011771号