python学习第三周之文件读与写2
2019-07-05 11:36
113 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/wuxiaorututu/article/details/94719409
1.先建txt文档perfect,里面是我自己粘进去的歌词,f.tell()把文件句柄所在指针的位置打印出来,f.seek()将光标定位到某个位置
[code]f=open("perfect",'r',encoding="utf-8") print(f.tell()) #把指针的位置打印出来,打印当前的位置 print(f.readline().strip()) print(f.tell()) f.seek(39) #定位到到某个位置 print(f.readline())
以上执行结果为:
0
我不完美心事
13
你总当作宝贝
2.打印文件编码,print(f.encoding)
3.f.flush(),刷新,在记事本中可能表现的更明显,在pycharm中执行程序无法看出效果。
先使用notepad++新建一个记事本test.txt,写入内容,在命令行中验证,使文件为可写的,此时重新写入并刷新,刷新后会提示“此文件被另一个程序修改,是否重新加载”
[code]>>> f=open("test.txt","w") >>> f.write("hello\n") #重新新建一个文件,覆盖原来的文件,此时新建文件为空白的 6 >>> f.flush() #刷新一下后,文件会显示新写入的“hello” >>> f.write("hello2\n") 7 >>> f.flush() #再次写入,再次刷新后,会将hello2追加到hello后面 >>> f.write("hello3\n") 7 >>> f.flush()
4.以进度条的方式输出,stdout为标准输出,以进度条的方式使#每隔0.5秒输出,没有time的话直接一下输出20个#
[code]import sys,time for i in range(20): #打印20个# sys.stdout.write("#") #stdout为标准输出 #sys.stdout.flush() #有没有这句话效果都一样,都是一个一个蹦出来的 time.sleep(0.5)
5.截断文件用f.truncate(),f.truncate(20)从文件开头截断20个字符,输出为从开头数的20个字符,这里以英文更明显。
[code]f=open("perfect",'a',encoding="utf-8") f.seek(10) #seek为定位到某个位置,在这里执行不起作用,以truncate()为主 f.truncate(20) #从文件开头截断,20个字符
6.文件读写,写读
(1)读写,r+为读加写,写为追加
[code]f=open("perfect",'r+',encoding="utf-8") #r+为读加写,写为追加; print(f.readline()) print(f.readline()) #先输出两行 print(f.tell()) #打印当前光标 f.seek(0) #将光标移到开头位置 f.write("----------wanmei-----------\n") #将光标移到开头,写入后,仍然追加到后面 f.close()
(2)写读,w+为写读,写的时候创建一个新文件
[code]f=open("perfect",'w+',encoding="utf-8") #w+为写读,写的时候创建一个新文件 print(f.readline()) f.write("----------wanmei-----------\n") #相当于新建文件写入 f.write("--wanmei---\n") f.write("--wanmei---\n") #先写入几行字符 print(f.tell()) f.seek(29) print(f.tell()) print(f.readline()) #打印光标所在行,光标位置后面的值 f.write("should be at the beggining of thr second line") #还是追加到后面 f.close()
(3)追加读写,a+,f=open("perfect",'a+',encoding="utf-8") #a+ 追加读写。
7二进制文件读取、写读
(1)rb,读取二进制文件,比如视频等,网络传输、视频文件、二进制文件
[code]f=open("perfect",'rb') #rb读二进制文件,视频等以二进制形式读取 网络传输只能用二进制模式 print(f.readline())
输出结果中,每一行开头多了b,为bytes,结尾为\r\n,输出结果如下:
b'I remember date and time\r\n'
b'September twenty second\r\n'
b'Sunday twenty five after nine\r\n'
(2)wb,读取二进制,
[code]f=open("perfect",'wb') f.write("hello binary\n".encode()) #新建一个文件,写入字符,需要将字符编码为bytes格式。 f.close()
相关文章推荐
- python学习第三周之文件修改
- Python学习 文件遍历
- Python模块学习 ---- StringIO, cStringIO 内存文件 收藏
- python学习笔记 目录和文件操作
- Python学习笔记---模块;文件与文本处理
- python下paramiko模块学习之三:上传批量文件到远程主机
- python 系统学习笔记(八)---文件操作
- Python学习笔记(七):元组、文件及其他类型
- 需求驱动学习之Python(如何编写Python脚本替换文件中的多行字符?)
- python学习-读文件
- Learn Python The Hard Way学习(16) - 读写文件
- python 学习记录(11)-文件处理/读取文件/文件写入内容/文件删除/文件复制/文件重命名/后缀名/内容查找与替换/文件比较/ 配置文件访问/目录创建与删除/遍历目录/定向输出
- python 学习笔记(10)重构与文件处理
- Python学习入门基础教程(learning Python)--5.1 Python下文件处理基本过程
- Python模块学习 ---- StringIO, cStringIO 内存文件
- 使用os.popen/commands.getoutput查询指定端口号的服务 分类: python 小练习 open()文件读写 python基础学习 2013-09-17 17:49 798人阅读 评论(0) 收藏
- Python学习---文件目录操作
- python下paramiko模块学习之四:从远程主机批量下载文件到本机
- python学习-读写文件
- 【python学习】遍历目录及写配置文件