前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >python文件操作

python文件操作

作者头像
py3study
发布2020-01-20 11:38:03
4750
发布2020-01-20 11:38:03
举报
文章被收录于专栏:python3python3

1. 文件操作 open 打开 f = open(文件路径, mode="模式", encoding="编码格式") 最最底层操作的就是bytes 打开一个文件的时候获取到的是一个文件句柄.

绝对路径 从磁盘根目录开始寻找 相对路径 相对于当前程序所在的文件夹 ../ 上一层文件 文件夹/ 进入xxx文件夹

代码语言:javascript
复制
1  f= open("D:\西游记\金角大王吧.txt", mode="r", encoding="gbk")
2 print(f.read())
3 f.close()

2. mode:

r: 读取,只读. 读取文件的相关操作 1. read() 默认: 读取文件内容(全部) read(n) 读取n个字符 2. readline() 读取一行 3. readlines() 读取全部. 返回列表 (最重要)4. for line in f: 每次读取一行内容

代码语言:javascript
复制
 1 f = open("moder.txt", mode="r", encoding="utf-8")
 2 print(f.read(5))  # 读取5个字符
 3 print(f.read(5))  #继续读5个
 4 print(f.readline().strip())  # 换行符为分割,strip()可以去掉换行. 读取到的内容第一件事就是去掉空白
 5 print(f.readline())
 6 f.close()
 7 
 8 print(f.readlines()) #一次性把文件中的内容读取到列表中
 9 
10 #文件句柄是一个可迭代对象
11 #优点:相对来说节省内存,操作相对简单一点
12 for line in f:  # 从文件中读取到每一行给前面的line
13     print(line.strip())
14 f.close()

w: 写入. 只写 创建文件 会清空文件

代码语言:javascript
复制
 1 # 每次用w模式打开文件,都会清空这个文件(坑)
 2 f = open('胡辣汤', mode='w', encoding="utf-8")  # 可以帮我们创建文件
 3 
 4 f.write('河南特色\n')
 5 f.write("东北特色\n")
 6 f.write("陕西特色\n")
 7 
 8 # 好习惯
 9 f.flush()  #刷新管道, 把数据写入文件
10 f.close()

a: 也可以创建文件 追加写

代码语言:javascript
复制
f = open("葫芦小金刚", mode="a", encoding="utf-8") # a, append 追加, 在文件末尾写入内容
f.write("你叫什么名字阿?")
# f.read() #not readable
f.flush()
f.close()

r+: 对于文件而言. 应该有的操作就两个:读, 写 读写操作

代码语言:javascript
复制
1 f = open("葫芦小金刚", mode="r+", encoding="utf-8")
2 content = f.read()  # 顺序必须先读,后写
3 # r+特有的深坑:不论读取内容的是多少,只要你读了.写就是在末尾
4 f.write('五娃')
5 print(content)

w+: 写读操作

代码语言:javascript
复制
 1 # 一上来会清空文件, 没人用
 2 f = open("葫芦小金刚", mode="w+", encoding="utf-8")
 3 # content = f.read()  # 顺序必须先读,后写
 4 # # r+特有的深坑:不论读取内容的是多少,只要你读了.写就是在末尾
 5 # f.write('五娃')
 6 f.write("有能吐火的, 有能吐水的")
 7 # 移动光标
 8 f.seek(0)  # 移动到开头
 9 s = f.read()
10 print("========>", s)

a+: 追加写读

所有带b的表示直接操作的是bytes, 当处理非文本文件的时候.

代码语言:javascript
复制
# 追加写读, 光标在末尾. 所有的写都是在末尾
f = open("葫芦小金刚", mode="a+", encoding="utf-8")
f.write("机械葫芦娃召唤神龙, 高喊. 我代表月亮消灭你!")
f.seek(0)
s =f.read()
print("=====>", s)

rb wb

ab: 断点续传

r+b w+b a+b

3.文件复制

代码语言:javascript
复制
 1 f1 = open("E:/1.png", mode="rb")
 2 
 3 f2 = open("D:/1.png", mode="wb")
 4 
 5 for line in f1:  # line是从f1中读取的内容
 6     f2.write(line)  # 把读取的内容原封不动的写出去
 7 
 8 f1.close()
 9 f2.flush()
10 f2.close()

4.seek和tell

代码语言:javascript
复制
 1 f = open("胡辣汤", mode="r+", encoding="utf-8")
 2 f.seek(0, 2)  # 移动到末尾
 3 # content = f.read()
 4 # print(content)
 5 # f.seek(0)  # 移动到开头
 6 # print(f.read())
 7 # print(f.tell())  # 字节
 8 
 9 f.seek(3)
10 print(f.read())

5.文件修改

代码语言:javascript
复制
 1 f = open("夸一夸alex", mode="r", encoding="utf-8")
 2 f2 = open("夸一夸alex_副本", mode="w", encoding="utf-8")
 3 
 4 for line in f:
 5     if "好人" in line:
 6         line = line.replace("好人", "sb")
 7     f2.write(line)
 8 f.close()
 9 f2.flush()
10 f2.close()
11 
12 os.remove("夸一夸alex")
13 
14 os.rename("夸一夸alex_副本", "夸一夸alex")
15 
16 with open("夸一夸alex", mode="r", encoding="utf-8") as f, \
17         open("夸一夸alex_副本", mode="w", encoding="utf-8") as  f2:
18     for line in f:
19         if "好人" in line:
20             line = line.replace("好人", "sb")
21         f2.write(line)
22 
23 os.remove("夸一夸alex")
24 os.rename("夸一夸alex_副本", "夸一夸alex")

6.水果统计

代码语言:javascript
复制
 1 f = open("水果.txt", mode="r", encoding="utf-8")
 2 line = f.readline().strip()
 3 title = line.split(",")  # ['编号','名称','价格','数量','哈哈']
 4 lst = []
 5 
 6 for line in f:  # 1,香蕉, 1.85, 50
 7     dic = {}  # 每行都是一个字典
 8     line = line.strip()  # 去掉空白 \n 1, 香蕉, 1.85, 50
 9     data = line.split(",")  # [1, 香蕉, 1.85, 50]
10 
11     for i in range(len(title)):
12         dic[title[i]] = data[i]
13 
14     lst.append(dic)
15 
16 print(lst)
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019-04-17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档