Python文件处理

Python文件操作教程

在python里面我们必不可少的就是要与文件打交道,这个时候我们使用open方法就可以打开或者是创建文件了。可以读取文件内容,也可以写入内容。

"""

文件操作,open()返回一个file对象,r+主模式为读,但也可以写。 w+主模式为写,但也可以读

1- 如果"r"的方式打开,不存在会报错异常,存在的话会打开并且返回该对象

2- 如果"w"的方式open,不存在的文件不会报错,但是会**创建**一个新的文件

3- 读取和写入的时候不能write多次和read多次,只能open-close之后再次操作,否则无效

"""

# 文件的打开

a_file = open("Test.txt", "w+")

# 文件的读写

a_file.write("Hello World!")

# 关闭文件

a_file.close()

"""

1- read(2) 读取2个字节, 无参表示读取全部

2- readline() 读取一行,再次readline()就会光标读取下一行

"""

b_file = open("Test.txt", "r")

result = b_file.read()

print(result)

b_file.close()

"""

中文的问题,可以在open的时候关键字参数指定编码open(encoding="utf-8")

file的访问模式:

1- "w" 先清空再写入,以文本的方式写入保存

2- "r" 不存在会直接异常报错

3- "a" -> append追加,也是写入的一种

4- "rb" 读取进制数据,显示的都是16进制的数字,需要解码decode

5- "wb" 以二进制的方式写入, 保存方式的不同,直接保存文本会报错,需要.encode("utf-8")保存

"""

c_file = open("Test.txt","wb")

c_file.write("中国".encode("utf-8")) # 文本.encode压缩

c_file.close()

d_file = open("Test.txt","rb") # 中文只能read(3)显示一个汉字

result = d_file.read().decode(encoding="utf-8") # 二进制读取的解码

print(result)

"""

题目

应用: 文件的备份copy

"""

old_file = open("Test.txt", "r")

result = old_file.readlines()

print(result)

# for循环开始进行copy写入

new_file = open("Test(附件).txt", "w")

for line in result:

new_file.write(line)

old_file.close()

new_file.close()

"""

上面的例子直接readlines(),并不是完美的copy方法

如果文件过大,一点点的读取写入,内存问题,防止电脑变卡

在读取的时候,可以按行读取或者按照公司的字节读取(2014)

本文分享自微信公众号 - Python乱炖(Cooking_python)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-09-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏陶士涵的菜地

[Linux]F5负载均衡器

F5配置最简单负载均衡,需要配置的参数有Node(节点)、Pool(资源池)、和Virtual Server(虚拟服务器),它们的关系是,先配置Node,然后配...

27520
来自专栏李才哥

前端面试题库系列(4)

defer 是“渲染完再执行”,async 是“下载完就执行”,defer 如果有多个脚本,会按照在页面中出现的顺序加载,多个async 脚本不能保证加载顺...

10110
来自专栏陶士涵的菜地

[nodejs] nodejs开发个人博客(一)准备工作

nodejs是运行在服务端的js,基于google的v8引擎。个人博客系统包含对数据库的增删查改,功能齐备,并且业务逻辑比较简单,是很多后台程序员为了检测学习成...

15930
来自专栏Rust语言学习交流

【Rust日报】2019-09-05:hyper 0.13 alpha 版本发布,支持 async/await

hyper 0.13 alpha 版本发布,它是一个使用 Rust 编写的成熟 HTTP 库,并且是速度最快的 HTTP 库之一,同时因其正确性得到了许多人的认...

11920
来自专栏陶士涵的菜地

[nodejs] nodejs开发个人博客(六)数据分页

分类列表分页路由:http://localhost:8888/category/分类id/分页

6920
来自专栏开发架构二三事

redis高可用模式比较及一致性hash

Sentinel为Redis提供高可用。利用Sentinel,在无人干预的情况下,可用让Redis服务抵御一定程度的故障。主要发挥以下几个方面的作用:

37120
来自专栏卡尼慕

Hadoop(二)

分开的分散的部署或布置具有多个不同功能或组件组成一个完整的系统,不同功能和组建搭建或部署到不同的节点。

9120
来自专栏一心一意谋发展,脚踏实地搞技术

分布式协调服务-Zookeeper

Zookeeper 是google的chubby一个开源实现,是hadoop的分布式协调服务 它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,...

9220
来自专栏终身学习者

36 个JS 面试题为你助力金九银十(面试必读)

在现代js中,let&const是创建变量的不同方式。 在早期的js中,咱们使用var关键字来创建变量。 let&const关键字是在ES6版本中引入的,其目的...

12520
来自专栏linux、Python学习

5分钟学会两年经验Linux运维都不懂的内核问题

之前在实习时,听了 OOM 的分享之后,就对 Linux 内核内存管理充满兴趣,但是这块知识非常庞大,没有一定积累,不敢写下,担心误人子弟,所以经过一个一段时间...

9820

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励