多测师_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 += 1if 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发展史: 自从20世纪90年代初Python语言诞生至今,它已被逐渐广泛应用于系统管理任务的处理和Web编程. Python的创始人为荷兰人吉多·范罗苏姆 [3] (Guido van ...
- 多测师_Python(简介)
python发展史: 自从20世纪90年代初Python语言诞生至今,它已被逐渐广泛应用于系统管理任务的处理和Web编程. Python的创始人为荷兰人吉多·范罗苏姆 [3] (Guido van ...
- 多测师_Python(re 模块)
1.元字符 . 匹配除换行符 \n 以外的任意一个字符 import res = "shenzhen duoceshi" print(re.findall("d...e& ...
- 史上最全软件测试工程师常见的面试题总结(九)【多测师】
author:多测师_王sir原创 1000道软件测试工程师最全面试题链接:https://www.cnblogs.com/xiaoshubass/p/12865319.html 微联创智面试: 1. ...
- 史上最全软件测试工程师常见的面试题总结(四)【多测师_王sir】
面试:神州数码 1.介绍你下你项目中一个自动化实现的流程 ==>看这篇http://duoceshi.cn/duoceshi/Tech_article/73.html 2.你觉得做自动化的意 ...
- 多测师拱墅校区肖sir_高级金牌讲师_html讲解
html 一.html 介绍 1.定义:超文本标记语言,也是一种标识性语言:(不是编程语言) 标记理解为:记号(绰号) 超文本:就是页面内容可以包含图片,链接,音乐,视频等素材: 2.为什么学习htm ...
- Java Spring框架入门详解教程【多测师_何sir】
Spring框架入门详解教程 spring概述 spring结构 spring IOC spring DI spring概述 Spring是一个非常活跃的开源框架, 它是一个基于IOC和AOP来构架多 ...
- 三种常见加密算法MD5、对称加密,非对称加密【多测师_王sir】
一.MD5加密 MD5加密的特点: 不可逆运算(不能破解.不能解密) 对不同的数据加密的结果是定长的32位字符(不管文件多大都一样) 对相同的数据加密,得到的结果是一样的(也就是复制) 抗修改性 : ...
- Java当中jvm运行时区域新生代、老年代、永久代和Garbage Collection垃圾回收机制【杭州多测师】【杭州多测师_王sir】...
1.本地方法栈和程序计数器 ==>偏底层一般不会接触到 2.方法区 ==>对应为永久代 3.虚拟机栈(stack) ==>对应为栈 4.堆(heap) ==>对应里面有新生代+ ...
最新文章
- 医院信息化建设历程(5)互联互通的数字化医院阶段
- Linux-locate/slocate命令
- scikit-learn一般实例之一:绘制交叉验证预测
- 嵌套 思维导图_Python 这方面,8张思维导图助你转身变大牛!
- [Java基础]TreeSet集合概述和特点
- 2019 wannafly winter camp day5-8代码库
- 趣味科普丨一文读懂云服务器的那些事儿
- android 按钮列表,android – 如何使按钮看起来像列表
- 深度学习必备的几款流行网络与数据集
- 查看ELK集群的状态命令
- python两数之和是多少_Python面试:两数之和
- php网站系统说明,国外CMS系统介绍(总结)
- 【语音增强】基于matlab小波变换语音增强【含Matlab源码 296期】
- Teemo Attacking
- linux系统怎么拨号上网,在linux中如何拨号上网?
- win10 小而美的软件推荐
- image target behaviour 和image target的关系_Behance大神为你揭秘任天堂、Target的UI为何这样设计?...
- 你若安好便是晴天_百度百科
- 密码中对称非对称加密是什么意思?
- 浪潮之巅第十一章 — 幕后的英雄:风险投资(Venture Capital)