每天五道面试题(8)

json序列化时,可以处理的数据类型有哪些?如何定制支持datetime类型?

json数组类型,json对象类型,json对象数组。

import json
from json import JSONEncoder
from datetime import datetime
class ComplexEncoder(JSONEncoder):
    def default(self, obj):
        if isinstance(obj, datetime):
            return obj.strftime('%Y-%m-%d %H:%M:%S')
        else:
            return super(ComplexEncoder,self).default(obj)
d = {"hello":"你好",'name':'alex','data':datetime.now()}
print(json.dumps(d,cls=ComplexEncoder,ensure_ascii=False))
# {"name": "alex", "data": "2018-05-18 19:52:05","hello":"你好"}

json序列化时,默认遇到中文会转换成unicode,如果想要保留中文怎么办?

import json
a=json.dumps({"ddf":"你好"},ensure_ascii=False)
print(a) #{"ddf": "你好"}

有用过with statement吗?它的好处是什么?

 with open('output.txt', 'w') as f:
        f.write('Hi there!')

当你要成对执行两个相关的操作的时候,这样就很方便,以上便是经典例子,with语句会在嵌套的代码执行之后,自动关闭文件。这种做法的还有另一个优势就是,无论嵌套的代码是以何种方式结束的,它都关闭文件。如果在嵌套的代码中发生异常,它能够在外部exception handler catch异常前关闭文件。如果嵌套代码有return/continue/break语句,它同样能够关闭文件。

使用代码实现查看列举目录下的所有文件。

import os
 
def dirpath(lpath, lfilelist):
    list = os.listdir(lpath)
    for f in list:
        file = os.path.join(lpath, f)  #拼接完整的路径
        if os.path.isdir(file):        #判断如果为文件夹则进行递归遍历
            dirpath(file, lfilelist)
        else:
            lfilelist.append(file)
    return lfilelist
 
 
lfilelist = dirpath(os.getcwd(), [])
for f in lfilelist:
    print(f)

简述 yield和yield form关键字。

yield用来返回一个元素,yield form用来返回一个生成器。

发布了242 篇原创文章 · 获赞 60 · 访问量 2167

猜你喜欢

转载自blog.csdn.net/qq_41106844/article/details/105553326
今日推荐