今天把饭倒进黄焖鸡里,同桌上楼就拉肚子
今日主要内容
1. 文件操作 open() 文件句柄
open()打开一个文件, 获取的是文件句柄
read()
readline()
readlines()
write()
for line in f: 遍历文件中的内容
路径的问题:
1. 绝对路径
从磁盘根目录寻找
2. 相对路径
从当前程序运行的文件夹内寻找
2. 文件操作的相关模式Mode
r: 只读
w: 只写
a: 追加
r+:
w+:
a+:
非文本文件
rb
wb
ab
r+b
w+b
a+b
3. 相关操作
1. seek()移动光标(重点)
seek(0) 开头
seek(0,2) 移动到末尾
2. tell() 获取光标所在的位置
3. truncate() 截断文件
4. 文件修改
with open(xxx) as 句柄, open(xxxxx)as xxx
不用手动关闭文件句柄
文件修改的步骤
1. 从源文件中读取数据。
2. 写入到副本文件中
3. 删除源文件
4. 把副本重命名成源文件
import os
os.remove()
os.rename()
是真的有点晕了
1,有如下文件,a1.txt,里面的内容为:
老男孩是最好的培训机构,
全心全意为学生服务,
只为学生未来,不为牟利。
我说的都是真的。哈哈
分别完成以下的功能:
a, 将原文件全部读出来并打印。
s = ‘‘‘老男孩是最好的培训机构,
全心全意为学生服务,
只为学生未来,不为牟利。
我说的都是真的。哈哈‘‘‘
with open(r‘a1.txt‘, mode=‘w‘, encoding=‘utf-8‘)as f:
for n in s:
f.write(n)
b, 在原文件后面追加一行内容:信不信由你,反正我信了。
add = ‘信不信由你,反正我信了。‘
with open(r‘a1.txt‘, mode=‘a‘, encoding=‘utf-8‘)as f:
f.writelines(add)
c, 将原文件全部读出来,并在后面添加一行内容:信不信由你,反正我信了。
with open(r‘a1.txt‘, mode=‘r+‘, encoding=‘utf-8‘)as f:
print(f.read())
f.write(add)
d, 将原文件全部清空,换成下面的内容:
每天坚持一点,
每天努力一点,
每天多思考一点,
慢慢你会发现,
你的进步越来越大。
s = ‘‘‘每天坚持一点,
每天努力一点,
每天多思考一点,
慢慢你会发现,
你的进步越来越大。‘‘‘
with open(r‘a1.txt‘, ‘w‘, encoding=‘utf-8‘)as f:
f.write(s)
e, 将原文件内容全部读取出来,并在‘我说的都是真的。哈哈’这一行的前面加一行,‘你们就信吧~’然后将更改之后的新内容,写入到一个新文件:a1.txt。
with open(‘a1.txt‘, mode=‘r‘, encoding=‘utf-8‘)as f, open(‘a2.txt‘, mode=‘w‘, encoding=‘utf-8‘)as f2:
n = 0
while 1:
n += 1
if f.readline() == ‘我说的都是真的。哈哈‘:
break
f.seek(0)
m = 0
while m < n - 1:
m += 1
f2.write(f.readline())
f2.write(‘你们就信吧~\n‘)
f2.write(f.readline())
2,有如下文件,t1.txt, 里面的内容为:
葫芦娃,葫芦娃,
一根藤上七个瓜
风吹雨打,都不怕,
啦啦啦啦。
我可以算命,而且算的特别准:
上面的内容你肯定是心里默唱出来的,对不对?哈哈
分别完成下面的功能:
a, 以r + 的模式打开原文件,判断原文件是否可读,是否可写。
with open(‘t1.txt‘, ‘r+‘, encoding=‘utf-8‘)as f:
if f.readable():
print(‘这文件可读‘)
if f.writable():
print(‘这文件可写‘)
b, 以r的模式打开原文件,利用for循环遍历文件句柄。
with open(‘t1.txt‘, ‘r‘, encoding=‘utf-8‘)as f:
for n in f:
print(n.strip())
c, 以r的模式打开原文件,以readlines()方法读取出来,并循环遍历readlines(), 并分析b, 与c有什么区别?深入理解文件句柄与readlines()结果的区别。
with open(‘t1.txt‘, ‘r‘, encoding=‘utf-8‘)as f:
lst = f.readlines()
for n in lst:
print(n.strip())
d, 以r模式读取‘葫芦娃,’前四个字符。
with open(‘t1.txt‘, mode=‘r‘, encoding=‘utf-8‘)as f:
print(f.read(4))
e, 以r模式读取第一行内容,并去除此行前后的空格,制表符,换行符。
with open(‘t1.txt‘, mode=‘r‘, encoding=‘utf-8‘)as f:
print(f.readline().strip())
f, 以r模式打开文件,从‘风吹雨打.....’开始读取,一直读到最后。
with open(‘t1.txt‘, mode=‘r‘, encoding=‘utf-8‘)as f:
k = 0
for n in f:
k += 1
if ‘风吹雨打‘ in n:
break
f.seek(0)
while k - 1:
k -= 1
f.readline()
for n in f:
print(n)
g, 以a + 模式打开文件,先追加一行:‘老男孩教育’然后在从最开始将原内容全部读取出来。
with open(‘t1.txt‘, mode=‘a+‘, encoding=‘utf-8‘)as f:
f.write(‘\n老男孩教育‘)
f.seek(0)
print(f.read())
h, 截取原文件,截取内容:‘葫芦娃’
with open(‘t1.txt‘, mode=‘r+‘, encoding=‘utf-8‘)as f:
f.truncate(9)
3,文件a.txt内容:每一行内容分别为商品名字,价钱,个数。
apple 10 3
tesla 100000 1
mac 3000 2
lenovo 30000 3
chicken 10 3
通过代码,将其构建成这种数据类型:[{‘name‘: ‘apple‘, ‘price‘: 10, ‘amount‘: 3}, {‘name‘: ‘tesla‘, ‘price‘: 1000000, ‘amount‘: 1}......]并计算出总价钱。
import copy
lst = []
dit = {}
with open(‘a.txt‘, mode=‘r‘, encoding=‘utf-8‘)as f:
for n in f.readlines():
dit = {}
dit[‘name‘] = n.strip().split(‘ ‘)[0]
dit[‘price‘] = n.strip().split(‘ ‘)[1]
dit[‘amount‘] = n.strip().split(‘ ‘)[2]
lst.append(dit)
print(lst)
4,有如下文件:
alex是老男孩python发起人,创建人。
alex其实是人妖。
谁说alex是sb?
你们真逗,alex再牛逼,也掩饰不住资深屌丝的气质。
将文件中所有的alex都替换成大写的SB(文件的改的操作)。
import os
lst = []
with open(r‘alex.txt‘, mode=‘r‘, encoding=‘utf-8‘)as f:
for n in f:
lst.append(n.replace(‘sb‘, ‘SB‘))
with open(‘alex2.txt‘, ‘w‘, encoding=‘utf-8‘)as f:
for n in lst:
f.write(n)
os.remove(‘alex.txt‘)
os.rename(‘alex2.txt‘, ‘alex.txt‘)
5,文件a1.txt内容(升级题)
name: apple
price: 10 amount: 3
year: 2012
name: tesla
price: 100000
amount: 1
year: 2013
.......
通过代码,将其构建成这种数据类型:
[{‘name‘: ‘apple‘, ‘price‘: 10, ‘amount‘: 3},
{‘name‘: ‘tesla‘, ‘price‘: 1000000, ‘amount‘: 1}......]
并计算出总价钱。
dit = {}
lst = []
with open(‘a1.txt‘, ‘r‘, encoding=‘utf-8‘)as f:
for n in f:
dit = {}
dit[n.strip().split(‘ ‘)[0].split(‘:‘)[0]] = n.strip().split(‘ ‘)[0].split(‘:‘)[1]
dit[n.strip().split(‘ ‘)[1].split(‘:‘)[0]] = n.strip().split(‘ ‘)[1].split(‘:‘)[1]
dit[n.strip().split(‘ ‘)[2].split(‘:‘)[0]] = n.strip().split(‘ ‘)[2].split(‘:‘)[1]
dit[n.strip().split(‘ ‘)[3].split(‘:‘)[0]] = n.strip().split(‘ ‘)[3].split(‘:‘)[1]
lst.append(dit)
print(lst)
6,文件a1.txt内容(升级题)
序号 部门 人数 平均年龄 备注
1 python 30 26 单身狗
2 Linux 26 30 没对象
3 运营部 20 24 女生多
.......
通过代码,将其构建成这种数据类型:
[{‘序号‘: ‘1‘, ‘部门‘: Python, ‘人数‘: 30, ‘平均年龄‘: 26, ‘备注‘: ‘单身狗‘},
......]
lst = []
with open(r‘a1.txt‘, ‘r‘, encoding=‘utf-8‘)as f:
for n in f:
dict = {}
dict[‘1‘] = n.split(‘ ‘)[0]
dict[‘部门‘] = n.split(‘ ‘)[1]
dict[‘人数‘] = n.split(‘ ‘)[2]
dict[‘平均数‘] = n.split(‘ ‘)[3]
dict[‘备注‘] = n.split(‘ ‘)[4]
lst.append(dict)
print(lst)
争取今晚肝完周末作业吧!!!
原文地址:https://www.cnblogs.com/joy20181017/p/9858657.html