Python 【文件的读写】
文件读写
A 读取文件
读文件三步:开——读——关。
file1 = open('/Users/Ted/Desktop/test/abc.txt','r',encoding='utf-8')
第一个参数是文件的保存地址
第二个参数表示打开文件时的模式(r(读),w(写入),a(追加))
第三个参数encoding='utf-8',表示的是返回的数据采用何种编码,一般采用utf-8或者gbk
——————————————————————————————
mac
open('/Users/Ted/Desktop/test/abc.txt'') #绝对路径
open('abc.txt') #相对路径
#相对路径也可以写成open('./abc.txt')
windows
Windows系统里,常用\来表示绝对路径, /来表示相对路径
C:\Users\Ted\Desktop\test\abc.txt #\在Python中是转义字符,Windows的绝对路径通常要稍作处理
写成以下两种格式
open('C:\\Users\\Ted\\Desktop\\test\\abc.txt')
#将'\'替换成'\\'
open(r'C:\Users\Ted\Desktop\test\abc.txt')
#在路径前加上字母
——————————————————————————————
获取文件路径方法
用VS Code打开文件夹,在文件点击右键
或者
将文件拖入终端窗口,获得文件的绝对路径
——————————————————————————————
B 写入文件
【第1步-开】以写入的模式打开文件。
file1 = open('/Users/Ted/Desktop/test/abc.txt','w',encoding='utf-8')
【第2步-写】往文件中写入内容,使用write()函数。
file1.write('张无忌\n')
#file1 = open('/Users/Ted/Desktop/test/abc.txt', 'a',encoding='utf-8')
#以追加的方式打开文件abc.txt
file1.write('张无忌\n')
#把字符串'张无忌'写入文件file1
【第3步-关】还是要记得关闭文件,使用close()函数
file1.close()
#注意事项:
1.write()函数写入文本文件的也是字符串类型。
2.在'w'和'a'模式下,如果你打开的文件不存在,那么open()函数会自动帮你创建一个
————————————————————————————————————————
为了避免打开文件后忘记关闭,占用资源或
当不能确定关闭文件的恰当时机的时候,我们可以用到关键字with
# 普通写法
1 file1 = open('abc.txt','a') 2 file1.write('张无忌') 3 file1.close()
# 使用with关键字的写法
1 with open('abc.txt','a') as file1: 2 #with open('文件地址','读写模式') as 变量名: 3 #格式:冒号不能丢 4 file1.write('张无忌') 5 #格式:对文件的操作要缩进 6 #格式:无需用close()关闭
—————————————————————————————————————————
scores.txt
罗恩 23 35 44
哈利 60 77 68 88 90
赫敏 97 99 89 91 95 90
马尔福 100 85 90
1 file = open('./scores.txt','r',encoding='utf-8') 2 file_lines = file.readlines() #函数readlines(),“按行读取” 3 file.close() 4 5 final_scores = [] 6 7 for i in file_lines: 8 data =i.split() #split()把字符串分开,把字符串切分成更细的一个个的字符串 9 sum = 0 10 for score in data[1:]: #遍历列表中第1个数据和之后的数据 11 sum = sum + int(score) #然后依次加起来,但分数是字符串,所以要转换 12 result = data[0]+str(sum)+'\n' #结果就是学生姓名和总分 13 final_scores.append(result) #每统计一个学生的总分,就把姓名和总分写入空列表 14 15 winner = open('./winner.txt','w',encoding='utf-8') 16 winner.writelines(final_scores) #writelines()函数,此处final_scores是一个列表,write()的参数必须是一个字符串,而writelines()可以是序列 17 winner.close()
——————————————————————
扩展
join()函数,字符串合并
语法:str.join(sequence)
str代表在这些字符串之中,你要用什么字符串连接
sequence代表数据序列
1 a=['c','a','t'] 2 b='' 3 print(b.join(a)) 4 c='-' 5 print(c.join(a))
6 cat 7 c-a-t
######################################################
# 下面注释掉的代码,皆为检验代码(验证每一步的思路和代码是否达到目标,可解除注释后运行)。
1 file1 = open('winner.txt','r',encoding='utf-8') 2 file_lines = file1.readlines() 3 file1.close() 4 5 dict_scores = {} 6 list_scores = [] 7 final_scores = [] 8 9 # print(file_lines) 10 # print(len('\n')) 11 12 # 打印结果为:['罗恩102\n', '哈利383\n', '赫敏570\n', '马尔福275\n'] 13 # 经过测试,发现'\n'的长度是1。所以,名字是“第0位-倒数第5位”,分数是“倒数第4位-倒数第二位”。 14 # 再根据“左取右不取”,可知:name-[:-4],score-[-4:-1] 15 16 for i in file_lines: # i是字符串。 17 print(i) 18 name = i[:-4] # 取出名字(注:字符串和列表一样,是通过偏移量来获取内部数据。) 19 score = int(i[-4:-1]) # 取出成绩 20 print(name) 21 print(score) 22 dict_scores[score] = name # 将名字和成绩对应存为字典的键值对(注意:这里的成绩是键) 23 list_scores.append(score) 24 25 # print(list_scores) 26 list_scores.sort(reverse=True) # reverse,逆行,所以这时列表降序排列,分数从高到低。 27 # print(list_scores) 28 29 for i in list_scores: 30 result = dict_scores[i] + str(i) + '\n' 31 # print(result) 32 final_scores.append(result) 33 34 print(final_scores) # 最终结果 35 36 winner_new = open('winner_new.txt','w',encoding='utf-8') 37 winner_new.writelines(final_scores) 38 winner_new.close()
锦瑟
[唐] 李商隐
锦瑟无端五十弦,
一弦一柱思华年。
庄生晓梦迷蝴蝶,
望帝春心托杜鹃。
沧海月明珠有泪,
蓝田日暖玉生烟。
此情可待成追忆,
只是当时已惘然。
1 list_test = ['一弦一柱思华年。\n','只是当时已惘然。'] # 将要默写的诗句放在列表里。 2 with open ('poem2.txt','r',encoding='utf-8') as f: 3 lines = f.readlines() 4 print(lines) #显示完整的诗 5 with open('poem2.txt','w',encoding='utf-8') as new: 6 for line in lines: 7 if line in list_test: # 属于默写列表中的句子,将其替换成横线。 8 new.write('____________。\n') 9 else: 10 new.write(line)
原文地址:https://www.cnblogs.com/CH-TNT/p/11399090.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- String - 71. Simplify Path
- 性能测试工具——wrk
- String - 67. Add Binary
- Math - 50. Pow(x, n)
- String - 44. Wildcard Matching
- DFS&BFS - 37. Sudoku Solver
- Array - 36. Valid Sudoku
- Array - 57. Insert Interval
- Binary Search - 378. Kth Smallest Element in a Sorted Matrix
- Array - 59. Spiral Matrix II
- Array - 54. Spiral Matrix
- String - 8. String to Integer (atoi)
- Array - 16. 3Sum Closest
- Array - 15. 3Sum
- Design - 146. LRU Cache