Python 读写文本(open)

读写参数

Character

Meaning

‘r’

open for reading (default)

‘w’

open for writing, truncating the file first

‘a’

open for writing, appending to the end of the file if it exists

‘b’

binary mode

‘t’

text mode (default)

‘+’

open a disk file for updating (reading and writing)

‘U’

universal newline mode (for backwards compatibility; should not be used in new code)

读写参数组合

模式

描述

rt

读取文本,默认模式

rb

读取二进制数据

wt

写入文本

wb

写入二进制

r+

不清空原文件,读写

w+

清空原文件,并读写

a+

在文件末尾读写

示例

首先在左面新建一个”abc.txt”的文件,文件的内容入如下: I love 公众号idg88

只读

只读模式(默认模式)

>>>>f=open("C:/Users/Administrator/Desktop/abc.txt","r")
>>>>print(f.read())
I
love
公众号idig88
>>>>f.close()

只写

写入模式

>>>>f=open("C:/Users/Administrator/Desktop/abc.txt","w")
>>>>f.write("test")
>>>>f.close()

输出的结果是: test

在使用”w”模式时,python会把原来的文件给覆盖掉,形成新的文件,这里注意如果写入的文件不存在,python会自动新建一个文件。

追加

追加模式

>>>>f=open("C:/Users/Administrator/Desktop/abc.txt","w")
>>>>f.write("test")
>>>>f.close()

输出的结果是: I love 公众号idig88

二进制读写

另外我们还可以设定读取和写入的方式: 以二进制方式读取:

>>>>f=open("C:/Users/Administrator/Desktop/abc.txt","rb")
>>>>print(f.read())
>>>>f.close()
b'I\r\nlove\r\nCSDN'

with实例

import re
with open("C:/Users/Administrator/Desktop/abc.txt","r",encoding="utf-8") as f:
    text=f.read()
text=re.sub(r"In \[.*\]:\n","[In]:",text)
text=re.sub(r"Out\[.*\]:","[Out]:",text)
with open("C:/Users/Administrator/Desktop/abc.txt","w",encoding="utf-8") as f:
    f.write(text)

编码问题

将一个gbk文件转码为utf8文件.注意r,w模式只能开启一种,所以encoding就确保了是编码还是解码,在r的模式下encoding做的是decode,而在w模式下encoding做的是encode.如果使用r+或者w+encoding既做decode又做encode,而且decodeencode编码相同.

gbk = open("./gbk.txt", "r", encoding = "gbk")
gbk_text = gbk.read()
gbk.close()
utf = open("./gbk.txt", "w", encoding = 'utf8')
utf.write(gbk_text)
utf.close()

open()

open(file, mode=’r’, buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

参数

说明

file

文件路径

mode

rwabt

buffering

encoding

只有在tmode下有用,指定编码和解码,默认使用系统的编码格式(win下是gbk,linux是utf8)

errors

newline

指定换行符

closefd

opener

file object

方法

描述

close()

关闭流

closed

如果已经关闭则返回true

readable()

是否可读

read()

(str)读取整个文本为一个字符串

readline(size=-1)

(str)返回一行,size可以指定多行

readlines(hint=-1)

(list),读取所有行

seek(offset[, whence])

更改指针偏移量

tell()

返回当前流的位置

writable()

是否可写

writelines(lines)

写入一行

write(s)

写入字符串

原文发布于微信公众号 - 编程坑太多(idig88)

原文发表时间:2018-03-10

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏北京马哥教育

前端数据如何被Django接受?学会这几个方法就可以了

? 作者:点点寒彬 来源: http://blog.csdn.net/wyb199026/article/details/51908450 背景 ? 测...

29870
来自专栏Jimoer

使用lambda编程之延迟执行

使用lambda表达式的主要原因是,将代码的执行延迟到一个合适的时间点。 所有的lambda表达式都是延迟执行的。毕竟,如果你希望立即执行一段代码,那就没有必要...

37180
来自专栏Vamei实验室

来玩Play框架03 模板

在上一章节中,我把字符串通过ok()返回给客户。我可以把一个完整的html页面放入字符串中返回。然而,现代的框架都提供了更好的方法——模板。模板将视图和数据分开...

22050
来自专栏小二的折腾日记

多线程

进程:是一个正在执行中的程序。 每一个进程执行都有一个执行顺序。该顺序是一个执行路径,或者叫一个控制单元。 线程:就是进程中的一个独立的控制单元。 线程在控制...

5610
来自专栏数据结构与算法

7617:输出前k大的数

7617:输出前k大的数 查看 提交 统计 提问 总时间限制:10000ms单个测试点时间限制:1000ms内存限制:65536kB描述 给定一个数组,统计前k...

40850
来自专栏vue学习

关于vue的命名规范

34450
来自专栏H2Cloud

TCPDUMP 抓包

  写了个脚本, 用于调试服务器消息传输, 代码如下: #!/bin/bash if [ $# -eq 0 ] ; then echo "usage local...

32850
来自专栏Python攻城狮

Pyramid中的request和response1.Request2.Multidict3.Response

官方API:pyramid.request、pyramid.response 和 pyramid.httpexceptions。

9410
来自专栏电光石火

获取URL地址中的GET参数

/*-----------------实现1--------------------*/ function getPar(par){ //获取当前URL...

27090
来自专栏python3

习题31:访问列表元素

访问列表中的元素,使用下标的方式,通常以0开始(为什么是0而不是1),这里程序的设计就是如此,个人觉得没有必要纠结,如有兴趣,可自行查看资料

9520

扫码关注云+社区

领取腾讯云代金券