python-文件操作&函数&json操作
Posted tour8
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python-文件操作&函数&json操作相关的知识,希望对你有一定的参考价值。
1、文件操作:打开模式r+、w+、a+
1 # r:只读、w:只写、a:追加写 2 # r+ 从文件开始覆盖写入;文件若不存在,直接抛异常;可读可写 3 # w+ 清空源文件后写入;文件若不存在,创建新文件写入;可读可写 4 # a+ 追加模式写入;文件若不存在,创建新文件写入;可读可写 5 f = open(\'user.txt\',\'w+\',encoding=\'utf-8\') 6 f.write(\'~~~~~~~~~\') 7 # 移动文件指针到文件开始 8 f.seek(0) 9 # # 清空文件 10 # f.truncate() 11 print(f.read()) 12 f.close()
2、交换变量的值
1 # 交换变量的值 2 a = 1 3 b = 2 4 c = 3 5 a, b = b, a 6 print(a, b) 7 8 a,b,c = b,c,a 9 print(a,b,c)
3、三元表达式
1 # 三元表达式 2 a = 2 3 sex = \'男\' if a == 1 else \'女\' 4 print(sex) 5 6 # 等同于下面的代码 7 if a == 1: 8 sex = \'男\' 9 else: 10 sex = \'女\' 11 print(sex)
4、列表生成式
1 # 列表生成式 2 l = [1,5,6,6,32,623,626] 3 l2 = [str(i)+\'km\' for i in l] 4 l3 = [str(i) + \'km\' for i in l if i > 30] 5 print(l2) 6 print(l3)
运行结果:
5、修改文件
1 # # 方法1:简单粗暴:小文件可用 2 # # 1、读取文件所有内容 3 # # 2、replace 4 # # 3、清空文件 5 # # 4、把新的内容写进去 6 # 7 # with open(\'f.txt\',\'r+\',encoding=\'utf-8\') as f: 8 # content = f.read() 9 # new_content = content.replace(\'100\',\'10000\') 10 # f.seek(0) 11 # f.truncate() 12 # f.write(new_content) 13 # f.flush() #立即刷新缓冲区的内容,写到磁盘上 14 15 16 # 方法2:两个文件操作 17 # 1、r模式打开a文件,w模式打开b文件 18 # 2、逐行读取q文件的内容,读完之后替换内容 19 # 3、把替换完的内容写到b文件里面 20 # 4、删除a文件,把b文件的名字改成a文件 21 22 import os 23 24 with open(\'f.txt\',encoding=\'utf-8\') as f1,open(\'f2.txt\',\'w\',encoding=\'utf-8\') as f2: 25 for line in f1: 26 new_line = line.replace(\'2\',\'222\') 27 f2.write(new_line) 28 # 删除源文件 29 os.remove(\'f.txt\') 30 # 修改文件名 31 os.rename(\'f2.txt\',\'f.txt\')
6、冒泡排序
1 l = [5,2,352,12,1,23,35,63,5,2] 2 3 # # 升序 冒泡排序 4 # # 原理: 5 # # 1、循环一趟,两个相邻的数比较(如果10个数需比较9次),最大的数移动到最后 6 # # 2、在重复上述循环(10个数需循环9趟) 7 8 # for i in range(len(l)-1): 9 # for j in range(len(l)-1): 10 # if l[j] > l[j+1]: 11 # l[j],l[j+1] = l[j+1],l[j] 12 # print(l) 13 14 15 # 降序 冒泡排序 16 # 控制需要循环多少趟 17 count = 0 18 for i in range(len(l)-1): 19 # 控制每一趟需要交换的次数(10个数两两比较,需比较9次) 20 # 第二趟时,最大的数不需要在进行比较,所以比较8次就可以 21 # 第三趟时,已经找到最大的两个数了,还剩下8个数,所以比较7次就可以了 22 # for j in range(len(l)-1): # 初级版,也可以实现 总共循环81次 23 for j in range(len(l)-1-i): # 优化,总共循环45次 24 if l[j] < l[j+1]: 25 l[j], l[j+1] = l[j+1], l[j] 26 count += 1 27 print(l) 28 print("循环的次数为:",count)
7、函数
(1)定义函数
1 # 读文件 2 def read_file(file_name): 3 with open(file_name,\'r\',encoding=\'utf=8\') as f: 4 content = f.read() 5 # 函数返回值:没有写返回值时,默认返回None 6 # return: 7 # 1、返回数据 8 # 2、函数里面只有遇到return,函数立马执行结束 9 return content 10 11 12 result = read_file(\'1.txt\') 13 print(result)
(2)函数参数
- 关键字参数:
- 调用函数时,我们可以使用“关键字参数”,它的形式是:
kwarg=value
- 关键字参数是通过关键字来确认参数的,所以可以不用按照函数定义时的顺序传递参数
- 调用函数时,我们可以使用“关键字参数”,它的形式是:
- 可变参数:它的形式是
*args
,名称前面有一个星号*
,用以接收不确定数量的参数
- 当我们声明一个诸如
*param
的星号参数时,从此处开始直到结束的所有位置参数(Positional Arguments)都将被收集并汇集成一个称为“param”的元组(Tuple)。 - 当我们声明一个诸如
**param
的双星号参数时,从此处开始直至结束的所有关键字参数都将被收集并汇集成一个名为param
的字典(Dictionary)
1 # # 必填参数、默认值参数、可变参数、关键字参数 必须按照这个顺序来 2 # # 必填参数必须写在默认值参数前面 3 # # 默认值参数必须在可变参数前面 4 # # 可变参数必须在关键字参数前面 5 # 6 def test1(name,phone=None,*args,**kargs): 7 print(name) 8 print(phone) 9 print(args) 10 print(kargs) 11 test1(\'lzh\',\'123\',\'adult\',\'child\',age=18,sex=\'女\')
运行结果:
8、json操作
(1)json与字典相互转换:
- json.dumps() 字典转json
- json.loads()json转字典
1 import json 2 3 d = {\'k1\':\'v1\',\'k2\':\'v2\',\'k3\':\'v3\',\'name\':\'龙珍红\'} 4 # 生成更多的数据 5 for i in range(20): 6 d[\'key%s\'%i] = i 7 # 字典是单引号 8 # json是双引号,转成字符串,转成json格式 9 print(d) 10 11 # 字典转json 12 json_str = json.dumps(d,indent=2,ensure_ascii=False) 13 print(json_str) 14 15 # json转字典 16 dic = json.loads(json_str) 17 print(dic)
(2)将字典转成json格式写文件:
- json.dumps():将字典转成json格式后,需调用文件write()方法写入
- json.dump():可直接将字典转成json格式后直接写入文件,不需要单独调用write()方法写入
1 d1 = {\'k1\':\'v1\',\'k2\':\'v2\',\'k3\':\'v3\',\'name\':\'龙珍红\'} 2 # 写入文件 3 with open(\'json2.json\',\'w\',encoding=\'utf-8\') as f: 4 json.dump(d1,f,ensure_ascii=False,indent=4) 5 6 with open(\'json1.json\',\'w\',encoding=\'utf-8\') as f: 7 json_str = json.dumps(d1,ensure_ascii=False,indent=4) 8 f.write(json_str)
(3)读json格式文件转成字典:
- json.loads():需要读一次文件,然后在将文件内容转成字典
- json.load():可直接将json文件转成字典
1 # 读文件 2 with open(\'json1.json\',encoding=\'utf-8\') as f: 3 content = f.read() 4 print(json.loads(content)) 5 6 with open(\'json2.json\', encoding=\'utf-8\') as f: 7 print(json.load(f))
以上是关于python-文件操作&函数&json操作的主要内容,如果未能解决你的问题,请参考以下文章