python(open 文件)
一、open 文件
1.open('file','mode')打开一个文件
- file 要打开的文件名,需加路径(除非是在当前目录)
- mode 文件打开的模式
- 需要手动关闭 close
2.with open('file','mode')as...
- 不需要手动关闭文件
二、文件操作模式
1.'r': 以只读模式打开(默认)(必须保证文件存在)
- python2.x 文件名中出现汉字时,需在括号内加 u 就不会出现报错IOError
- #python2.x
- file1 = open(u"D:\新方硕.txt","r",encoding="gbk")
- print file1.read()
- file1.close()
- #python3.x
- file1 = open("D:\新方硕.txt","r",encoding="gbk")
- #文件内中文为手动输入,则需转码
- print (file1.read().decode('gbk').encode('utf-8'))
- file1.close()
- read(size) 读取所有
- 返回字符串
- 括号接读取 size 字符
- #read()不传参数时默认读取所有
- f = open("D:\work_doc\CodeFile\Study\\filename")
- print(f.read())
- f.close()
- #结果如下:
- """
- 这缘分 像一道桥
- 旌旗飘啊飘
- 你想走 就请立马抽刀
- 爱一笔勾销
- """
- #read(3)括号内参数3代表字符数,1个汉字1个字符
- f = open("D:\work_doc\CodeFile\Study\\filename")
- print(f.read(3))
- f.close()
- #结果如下:
- """
- 这缘分
- """
- #文件内容如下
- """
- 这缘分 像一道桥
- 旌旗飘啊飘
- 你想走 就请立马抽刀
- 爱一笔勾销
- """
- f = open("D:\work_doc\CodeFile\Study\\filename","r",encoding="gbk")
- print(f.read(3)) #读取完这行后,操作光标已经在第一行末尾了
- print(f.read(3),end="") #所以接下来再次读取会读取第二行数据
- f.close()
- #读取结果如下
- """
- 这缘分
- 像一
- """
- readline(size)默认读取一行
- 返回字符串
- 括号内 size 为读取的子符数
- #readline()默认读取一行
- file1 = open("D:\新方硕.txt","r")
- print (file1.readline())
- file1.close()
- #readline(size)括号内填了字符数,则按字符读取
- file1 = open("D:\新方硕.txt","r")
- print (file1.readline(5))
- file1.close()
- #文件内容如下
- """
- 这缘分 像一道桥
- 旌旗飘啊飘
- 你想走 就请立马抽刀
- 爱一笔勾销
- """
- f = open("D:\work_doc\CodeFile\Study\\filename","r",encoding="gbk")
- print(f.readline(),end="") #读取完这行后,操作光标已经在第一行末尾了
- print(f.readline(),end="") #所以接下来再次读取会读取第二行数据
- f.close()
- #读取结果如下
- """
- 这缘分 像一道桥
- 旌旗飘啊飘
- """
- readlines()读取所有
- 返回列表
- file1 = open("D:\新方硕.txt","r")
- print (str(file1.readlines()).decode('string_escape')) #转码问题
- file1.close()
- with open('d:\\test1.txt','r') as file1:
- for i in file1.readlines():
- print (i)
- #去掉打印出来的换行符
- #方法一
- f = open("D:\work_doc\CodeFile\Study\\filename","r",encoding="gbk")
- data = f.readlines()
- for i in data:
- print(i.strip())
- f.close()
- #方法二
- f = open("D:\work_doc\CodeFile\Study\\filename","r",encoding="gbk")
- data = f.readlines()
- for i in data:
- print(i.splitlines()[0])
- f.close()
- #文件内容如下
- """
- 这缘分 像一道桥
- 旌旗飘啊飘
- 你想走 就请立马抽刀
- 爱一笔勾销
- """
- #对返回的结果中某一行进行处理操作
- f = open("D:\work_doc\CodeFile\Study\\filename","r",encoding="gbk")
- data = f.readlines()
- line = 0
- for i in data:
- line += 1
- if line == 4:
- i = " --".join([i.strip(),"王力宏"]) #往第四行后面添加 "王力宏" 字符串
- print(i.strip())
- f.close()
- #返回结果如下
- """
- 这缘分 像一道桥
- 旌旗飘啊飘
- 你想走 就请立马抽刀
- 爱一笔勾销 --王力宏
- """
- 最优读取文件方法,不占内存
- #文件内容如下
- """
- 这缘分 像一道桥
- 旌旗飘啊飘
- 你想走 就请立马抽刀
- 爱一笔勾销
- """
- f = open("D:\work_doc\CodeFile\Study\\filename","r",encoding="gbk")
- for i in f: #for循环内部将 f 对象做出了一个迭代器,用一行数据取一行数据,用完后(print)的数据删除,不占内存空间
- print(i.strip())
- f.close()
- #返回结果如下
- """
- 这缘分 像一道桥
- 旌旗飘啊飘
- 你想走 就请立马抽刀
- 爱一笔勾销
- """
备注:
- 调用
read()和readlines()
会一次性读取文件的全部内容,如果文件有10G,内存就爆了,所以,要保险起见,可以反复调用read(size)
方法,每次最多读取 size 个字节的内容。另外,调用readline()
可以每次读取一行内容。 - 如果文件很小,
read()
一次性读取最方便;如果不能确定文件大小,反复调用read(size)
比较保险;如果是配置文件,调用readlines()
最方便。
2.'w':以只写模式打开
- 若文件存在,则会自动清空文件,然后重新创建。
- 若文件不存在,则新建文件。
- 使用这个模式必须要保证文件所在目录存在,文件可以不存在。
- file1 = open("D:\\xfs.txt","w")
- file1.write("I am python!")
- file1.close()
- #将test文件内容复制到test1中
- file1 = open('d:\\test.txt','r')
- file2 = open('d:\\test1.txt','w')
- file3 = file2.write(file1.read())
- file1.close()
- file2.close()
- with open('d:\\test.txt','w') as file1:
- file2 = file1.write('缘分一道桥\n歌词\n男:\n秦时明月汉时关\n万里长征人未还\n但使龙城飞将在\n不教胡马度阴山\n女:\n狼烟千里乱葬岗\n'
- '乱世孤魂无人访\n无言苍天笔墨寒\n笔刀春秋以血偿\n男:\n谈爱恨 不能潦草\n战鼓敲啊敲\n用信任 立下誓言我来熬\n'
- '女:\n这缘份 像一道桥\n旌旗飘啊飘\n你想走就请立马抽刀爱一笔勾销\n合:\n谈爱恨 不能潦草\n红尘烧啊烧\n以生死 '
- '无愧证明谁重要\n女:\n这缘份 像一道桥\n故事瞧一瞧\n男:\n走天涯你我卸下战袍\n合:\n梦回长城谣')
- 该模式下不能使用 read*() 方法。
- #报错IOError: File not open for reading
- file1 = open("D:\\xfs.txt","w")
- file1.write("I am python!")
- print (file1.read())
3.'a':以追加模式打开
- 若文件存在,则会追加到文件的末尾。
- 若文件不存在,则新建文件。
- 该模式不能使用 read*() 方法。
- #写入前文件内容如下
- """
- 这缘分 像一道桥
- 旌旗飘啊飘
- 你想走 就请立马抽刀
- 爱一笔勾销
- """
- #进行追加写入操作
- f = open("D:\work_doc\CodeFile\Study\\filename","a")
- f.write("\n--王力宏")
- f.close()
- #写入后文件内容如下
- """
- 这缘分 像一道桥
- 旌旗飘啊飘
- 你想走 就请立马抽刀
- 爱一笔勾销
- --王力宏
- """
4.'r+': 以文本读写模式打开
- 可以写到文件任何位置。
- 默认写的指针开始指在文件开头, 因此会覆写。
- 可以使用 read*()
- file1 = open(u"D:\\新方硕.txt","r+")
- file1.seek(3)
- file1.write("HTML")
- file1.close()
- #默认从第一个子节开始覆写
- file1 = open(u"D:\\新方硕.txt","r+")
- file1.seek(3)
- file1.write("HTML")
- file1.close()
- 文件不存在时,写入会自动创建文件
- f = open("music","w+",encoding="utf8")
- f.write("秦时明月汉时关\n")
- f.write("万里长征人未还\n")
- f.write("但使龙城飞将在\n")
- f.write("不教胡马度阴山")
- f.close()
- #结果如下
- """
- 秦时明月汉时关
- 万里长征人未还
- 但使龙城飞将在
- 不教胡马度阴山
- """
- #写入前文件内容如下
- """
- 秦时明月汉时关
- 万里长征人未还
- """
- f = open("music","a+",encoding="utf8")
- f.write("\n--王力宏")
- f.close()
- #写入后内容
- """
- 秦时明月汉时关
- 万里长征人未还
- --王力宏
- """
python(open 文件)的更多相关文章
- Python读写文件
Python读写文件1.open使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('t ...
- python计算文件的md5值
前言 最近要开发一个基于python的合并文件夹/目录的程序,本来的想法是基于修改时间的比较,即判断文件有没有改变,比较两个文件的修改时间即可.这个想法在windows的pc端下测试没有问题. 但是当 ...
- python操作文件案例二则
前言 python 对于文件及文件夹的操作. 涉及到 遍历文件夹下所有文件 ,文件的读写和操作 等等. 代码一 作用:查找文件夹下(包括子文件夹)下所有文件的名字,找出 名字中含有中文或者空格的文件 ...
- Python :open文件操作,配合read()使用!
python:open/文件操作 open/文件操作f=open('/tmp/hello','w') #open(路径+文件名,读写模式) 如何打开文件 handle=open(file_name,a ...
- python学习 文件操作
一.python打开文件 #=====================python 文件打开方式 open()===================== # open(fileName,type) t ...
- Python之文件读写
本节内容: I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input ...
- python 遍历文件夹 文件
python 遍历文件夹 文件 import os import os.path rootdir = "d:\data" # 指明被遍历的文件夹 for parent,dirn ...
- python检测文件的MD5值
python检测文件的MD5值MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),经MD2.MD3和MD4发展而来.MD5算法的使用不需要支付任何版权 ...
- Python编码/文件读取/多线程
Python编码/文件读取/多线程 个人笔记~~记录才有成长 编码/文件读取/多线程 编码 常用的一般是gbk.utf-8,而在python中字符串一般是用Unicode来操作,这样才能按照单个字 ...
- python 读写文件和设置文件的字符编码
一. python打开文件代码如下: f = open("d:\test.txt", "w") 说明:第一个参数是文件名称,包括路径:第二个参数是打开的模式mo ...
随机推荐
- ubuntu18.04配置宽带上网
1.将 /etc/NetworkManager 目录下的 managed标签改为true 2.将 /etc/network/ 目录下的 interfaces文件只留下前两行: auto lo ifac ...
- 2020 PHP 初级 / 基础面试题,祝你金三银四跳槽加薪 (适合基础不牢固的 PHPer)
1.PHP 语言的一大优势是跨平台,什么是跨平台? PHP 的运行环境最优搭配为 Apache+MySQL+PHP,此运行环境可以在不同操作系统(例如 windows.Linux 等)上配置,不受操作 ...
- 判断一组checkbox/redio是否被选中,为其添加样式
业务场景:当一行中有一个CheckBox被选中,则为此行添加class. <script type="text/javascript"> $(function(){ $ ...
- IntelliJ IDEA 在方法大括号中{}点击回车多出一个},如何取消
在 File - settings - Editor - General- Smart Keys - Enter 去掉 Insert pair '}' 的对勾就可以了
- golang环境安装和配置
go中环境安装 前言 最近在工作中需要新配置go环境,每次都要去网上查找教程,浪费时间,那么就自己总结下. 下载安装 linuxGolang官网下载地址:https://golang.org/dl/1 ...
- CopyOnWriteArrayList线程安全的集合
CopyOnWriteArrayList是线程安全的集合.本身就是安全的,同时只能被一个进程所访问. 属于JUC并发编程里面的内容. public static void main(String[] ...
- 【python系统学习14】类的继承与创新
目录: 目录: [toc] 类的继承 子类和父类 继承的写法 继承示例 父类可以被无限个子类所继承 子类实例可调用父类属性和方法 类的始祖(根类) 根类 - object 实例归属判断 - isins ...
- 教你如何在工作中“偷懒”,python优雅的帮你解决
前言 本文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. PS:如有需要Python学习资料的小伙伴可以加点击下方链接自行获取htt ...
- django.template.exceptions.TemplateDoesNotExist: login.html报错
前言 在某一次按以前的步骤使用Django “django.template.exceptions.TemplateDoesNotExist: login.html”错误,在以为是html文件出 ...
- python-Django与Apache整合wsgi模块
1.安装wsgi模块 yum search mod_wsgi yum install -y mod_wsgi 2.会在httpd下有配置文件 cd /etc/httpd/conf.d/wsgi.con ...