您的位置:首页 > 编程语言 > Python开发

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()

 

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: