1. Python 交换两个变量的值
答:在 Python 中交换两个对象的值通过下面的方式即可
a , b = b ,a
但是需要强调的是这并不是元组解包,通过 dis 模块可以发现,这是交换操作的字节码是 ROT_TWO,意思是在栈的顶端做两个值的互换操作。
2. 在读文件操作的时候会使用 read、readline 或者 readlines,简述它们各自的作用
答:.read() 每次读取整个文件,它通常用于将文件内容放到一个字符串变量中。如果希望一行一行的输出那么就可以使用 readline(),该方法会把文件的内容加载到内存,所以对于大文件的读取操作来说非常的消耗内存资源,此时就可以通过 readlines 方法,将文件的句柄生成一个生产器,然后去读就可以了。
可参考: 文献、菜鸟教程
3. json 序列化时,可以处理的数据类型有哪些?如何定制支持 datetime 类型?
答: 可以处理的数据类型是 str、int、list、tuple、dict、bool、None, 因为 datetime 类不支持 json 序列化,所以我们对它进行拓展。
详细知识参考:序列化
#自定义时间序列化
import json
from datetime import datetime, date
#JSONEncoder 不知道怎么去把这个数据转换成 json 字符串的时候,它就会去调 default()函数,所以都是重写这个函数来处理它本身不支持的数据类型,
#default()函数默认是直接抛异常的。
class DateToJson(json.JSONEncoder):
def default(self, obj):
if isinstance(obj, datetime):
return obj.strftime('%Y-%m-%d %H:%M:%S')
elif isinstance(obj, date):
return obj.strftime('%Y-%m-%d')
else:
return json.JSONEncoder.default(self, obj)
d = {
'name': 'cxa', 'data': datetime.now()}
print(json.dumps(d, cls=DateToJson))
4. json 序列化时,默认遇到中文会转换成 unicode,如果想要保留中文怎么办?
答:可以通过 json.dumps 的 ensure_ascii 参数解决,代码示例如下:
import json
a=json.dumps({“name”:“张三”},ensure_ascii=False)
print(a)
可以参考文献:json 中的ensure_ascii=False
5. 有两个磁盘文件 A 和 B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件 C 中。
答:
#文件 A.txt 内容为 ASDCF
#文件 B.txt 内容为 EFGGTG
with