一、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()
 
5.'w+': 以文本读写模式打开(打开前文件会被清空)
  • 文件不存在时,写入会自动创建文件
f = open("music","w+",encoding="utf8")
f.write("秦时明月汉时关\n")
f.write("万里长征人未还\n")
f.write("但使龙城飞将在\n")
f.write("不教胡马度阴山")
f.close() #结果如下
"""
秦时明月汉时关
万里长征人未还
但使龙城飞将在
不教胡马度阴山
"""
6.'a+': 以文本读写模式打开(写只能写在文件末尾)
#写入前文件内容如下
"""
秦时明月汉时关
万里长征人未还
""" f = open("music","a+",encoding="utf8")
f.write("\n--王力宏")
f.close() #写入后内容
"""
秦时明月汉时关
万里长征人未还
--王力宏
"""

python(open 文件)的更多相关文章

  1. Python读写文件

    Python读写文件1.open使用open打开文件后一定要记得调用文件对象的close()方法.比如可以用try/finally语句来确保最后能关闭文件. file_object = open('t ...

  2. python计算文件的md5值

    前言 最近要开发一个基于python的合并文件夹/目录的程序,本来的想法是基于修改时间的比较,即判断文件有没有改变,比较两个文件的修改时间即可.这个想法在windows的pc端下测试没有问题. 但是当 ...

  3. python操作文件案例二则

    前言 python 对于文件及文件夹的操作. 涉及到 遍历文件夹下所有文件 ,文件的读写和操作 等等. 代码一 作用:查找文件夹下(包括子文件夹)下所有文件的名字,找出 名字中含有中文或者空格的文件 ...

  4. Python :open文件操作,配合read()使用!

    python:open/文件操作 open/文件操作f=open('/tmp/hello','w') #open(路径+文件名,读写模式) 如何打开文件 handle=open(file_name,a ...

  5. python学习 文件操作

    一.python打开文件 #=====================python 文件打开方式 open()===================== # open(fileName,type) t ...

  6. Python之文件读写

    本节内容: I/O操作概述 文件读写实现原理与操作步骤 文件打开模式 Python文件操作步骤示例 Python文件读取相关方法 文件读写与字符编码 一.I/O操作概述 I/O在计算机中是指Input ...

  7. python 遍历文件夹 文件

    python 遍历文件夹 文件   import os import os.path rootdir = "d:\data" # 指明被遍历的文件夹 for parent,dirn ...

  8. python检测文件的MD5值

    python检测文件的MD5值MD5(单向散列算法)的全称是Message-Digest Algorithm 5(信息-摘要算法),经MD2.MD3和MD4发展而来.MD5算法的使用不需要支付任何版权 ...

  9. Python编码/文件读取/多线程

    Python编码/文件读取/多线程 个人笔记~~记录才有成长   编码/文件读取/多线程 编码 常用的一般是gbk.utf-8,而在python中字符串一般是用Unicode来操作,这样才能按照单个字 ...

  10. python 读写文件和设置文件的字符编码

    一. python打开文件代码如下: f = open("d:\test.txt", "w") 说明:第一个参数是文件名称,包括路径:第二个参数是打开的模式mo ...

随机推荐

  1. python 函数--匿名函数

    一.匿名函数的定义: 解决一些简单的需要用函数去问题,匿名函数的函数体只有一行. 二.格式: calc = lambda n:n**n 函数名   = 匿名函数  参数:返回值 三.练习:

  2. Flask 入门(十)

    flask 中的 db.relationship() 上文提到的方法,也可以找到狗的主人,但是,方便吗?,如果一个人有多只狗呢? 承接上文,修改main.py中的代码如下: #encoding:utf ...

  3. 深入理解equals和hashCode关系和区别

    为什么要说equals和hashCode这两个东西,一来是因为有不少小伙伴面试时被问过这个东西,二来则是因为如果了解了这两个东西的原理,那么实际的开发过程中,对效率和容错率上还是能帮上很大的忙! 直入 ...

  4. 复杂Excel转换与导入

    需求 把不同客户提供Excel 直接导入到系统中生成对应的收货单或是出货单.后端创建收货端和出货单的接口已经有现成的webservice或是标准的xml:这类需要做的就是把客户提供不同种类的Excel ...

  5. Python 控制流代码混淆简介,加大别人分析你代码逻辑和流程难度

    前言 文的文字及图片来源于网络,仅供学习.交流使用,不具有任何商业用途,版权归原作者所有,如有问题请及时联系我们以作处理. 作者: 王平 PS:如有需要Python学习资料的小伙伴可以加点击下方链接自 ...

  6. Wireshark的两种过滤器与BPF过滤规则

    Wirshark使用的关键就在于过滤出想要的数据包,下面介绍怎么过滤. 抓包过滤器 Wirshark有两种过滤器,一个是抓包过滤器,一个是显示过滤器,他们之间的区别在于抓包过滤器只抓取你设置的规则,同 ...

  7. Java 基础讲解

    Hello,老同学们,又见面啦,新同学们,你们好哦! 在看完本人的<数据结构与算法>专栏的博文的老同学,恭喜你们在学习本专栏时,你们将会发现好多知识点都讲解过,都易于理解,那么,没看过的同 ...

  8. google无法播放mp4 chrome无法播放h264

    写在前面 我在chrome上无法播放h264+Acc的mp4,在firefox.ie都可以播放,而且此mp4在vlc终可以正常播放. 视频链接:http://106.14.221.185:7001/p ...

  9. 2. Git-命令行-删除本地和远程分支

    命令行方式 Git Bash: 切换到要操作的项目文件夹 命令行 : $ cd <ProjectPath> 查看项目的分支们(包括本地和远程) 命令行 : $ git branch -a ...

  10. [源码分析] 带你梳理 Flink SQL / Table API内部执行流程

    [源码分析] 带你梳理 Flink SQL / Table API内部执行流程 目录 [源码分析] 带你梳理 Flink SQL / Table API内部执行流程 0x00 摘要 0x01 Apac ...