Python的文件操作
2019-07-24 09:16:56来源:博客园 阅读 ()
1、初始文件操作
1、使用python读写文件使用open()函数获取文件句柄,就可以操作文件了,根据打开方式不同能执行的操作也不同。
打开方式有:
r、w、a、r+、w+、a+、rb、wb、ab、r+b、w+b、a+b,默认用的是r模式
2、只读操作(r、rb)
2.1、只读模式r
#文件的路径分隔符使用/,在windows下和linux都可以生效 f = open("C:/Users/18811/Desktop/部署用到的地址.txt",mode="r",encoding="ANSI") content = f.read() f.close()
2.2、只读模式rb,下面rb的方式用于读取非文本文件时,如MP3、图像、视频等,这种文件无法直接显示,rb模式下不能选择encoding
f = open("aa.mp3",mode="rb") content = f.read() f.close()
3、读取文件的方法
read(n)读取n个字符,如果再次读取会从当前位置继续读取,不会从头读取,如果是rb模式下,则会读取第n个字节 read()将读取全部内容,弊端:占内存,如果文件过大,容易使内存崩溃 readLine()取一行数据,但每次结尾都有\n或空格,所以要用strip()方法去掉 readLines()将每一行形成一个元素,放到一个列表中,但此方法也会极大耗内存,故不推荐 #最好的读取方式,循环读取不会占内存 f = open("C:/Users/18811/Desktop/部署用到的地址.txt",mode="r",encoding="ANSI") for i in f: print(i.strip("\n")) f.close()
4、写模式(w、wb)
4.1、写的时候,如果没有文件,会创建文件,如果文件存在,则会将原文件内容删除,再重新写入新的内容
f = open("C:/Users/18811/Desktop/你好.txt",mode="w",encoding="UTF-8") f.write("你好,我是新搬家的阿里\nNICE TO MEET YOU!") f.flush() f.close()
4.2、wb模式,可以不指定打开文件的编码,但写文件时,必须将字符串转成UTF-8的bytes数据
f = open("?小娃娃", mode="wb") f.write("?金金?毛狮王".encode("utf-8")) f.flush() f.close()
5、追加模式(a、ab)
5.1、追加模式下,写入的内容会追加到文件的结尾,追加模式下,如果没有文件也会先创建
f = open("C:/Users/18811/Desktop/你好.txt",mode="a",encoding="UTF-8") f.write("你好,我是新搬家的阿里\n我很喜欢你") f.flush() f.close()
5.2、rb模式下
f = open("C:/Users/18811/Desktop/你好.txt",mode="ab") f.write(b'\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x8c\xe6\x88\x91\xe6\x98\xaf') f.flush() f.close()
6、读写模式(r+、r+b),对于读写模式, 必须是先读, 因为默认光标是在开头的, 准备读取的, 当读完了之后再进行写入, 我们以后使用频率最高的模式就是r+
f = open("?小娃娃", mode="r+", encoding="utf-8") content = f.read() f.write("麻花藤的最爱") print(content) f.flush() f.close() #结果:正常的读取之后, 写在结尾
#注意r+模式下. 必须是先读取. 然后再写入
7、写读(w+, w+b),先将所有的内容清空,然后写入,最后读取,但是读取的内容是空的, 不常用
f = open("?小娃娃", mode="w+", encoding="utf-8") f.write("哈哈") content = f.read() print(content) f.flush() f.close()
8、追加读(a+),a+模式下, 不论先读还是后读. 都是读取不到数据的.
f = open("?小娃娃", mode="a+", encoding="utf-8") f.write("?马化腾") content = f.read() print(content) f.flush() f.close()
9、其他的一些方法
1、seek(n) 光标移动到n位置, 注意, 移动的单位是byte. 所以如果是UTF-8的中文部分要是3的倍数. 移动到开头: seek(0) 移动到结尾: seek(0,2) seek的第二个参数表示的是从哪个位置进行偏移, 默认是0, 表 示开头, 1表示当前位置, 2表示结尾 2、tell()方法 使用tell()可以帮我们获取到当前光标在什么位置 3、truncate() 截断文件,删掉光标后面的所有内容 深坑请注意: 在r+模式下. 如果读取了内容. 不论读取内容多少. 光标显示的是多少. 再写入或者操作文件的时候都是在结尾进行的操作. 所以如果想做截断操作,记住了, 要先挪动光标,挪动到你想要截断的位置,然后再进行截断关于truncate(n), 如果给出了n. 则从开头进行截断, 如果不给n, 则从当前位置截断. 后面的内容将会被删除
10、修改文件以及另一种打开文件的方式,文件修改: 只能将文件中的内容读取到内存中, 将信息修改完毕, 然后将源文件删除, 将新文件的名字改成老文件的名字
import os with open("小娃娃", mode="r", encoding="utf-8") as f1,\ open("小娃娃_new", mode="w", encoding="UTF-8") as f2: for line in f1: new_line = line.replace("大白梨", "冰糖葫芦") f2.write(new_line) os.remove("小娃娃") # 删除源?文件 os.rename("小娃娃_new", "小娃娃") # 重命名新?文件
原文链接:https://www.cnblogs.com/jknote/p/11150009.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- python3基础之“术语表(2)” 2019-08-13
- python3 之 字符串编码小结(Unicode、utf-8、gbk、gb2312等 2019-08-13
- Python3安装impala 2019-08-13
- 小白如何入门 Python 爬虫? 2019-08-13
- python_字符串方法 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash