赞
踩
什么是流?(文件流/字节流/字符流)
流,简单来说就是建立在面向对象基础上的一种抽象的处理数据的工具。在流中,定义了一些处理数据的基本操作,如读取数据,写入数据等,程序员是对流进行所有操作的,而不用关心流的另一头数据的真正流向。流不但可以处理文件,还可以处理动态内存、网络数据等多种数据形式。
Python提供了必要的函数和方法进行默认情况下的文件基本操作----->file对象
语法:
file object = open(file_name [, access_mode][, buffering])
各个参数的细节如下:
file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。
access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
不同模式打开文件的完全列表:
模式 描述
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
w+ 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
file对象相关的所有属性的列表:
属性 描述
file.closed 如果文件已被关闭返回true,否则返回false。
file.mode 返回被打开文件的访问模式。
file.name 返回文件的名称。
file.softspace 如果用print输出后,必须跟一个空格符,则返回false。否则返回true。
首先打开一个文件查看其状态:
file=open('love.txt','a')
print('文件名:',file.name)
print('是否已关闭:',file.closed)
print('访问模式:',file.mode)
结果:
文件名: love.txt
是否已关闭: False
访问模式: a
进程已结束,退出代码0
Close()方法关闭打开的文件
file.close()
print(file.closed)
结果:
True
进程已结束,退出代码0
Write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字,
且不在字符串的结尾不添加换行符('\n'):
file.write('tell me where do i find ,some one like you girl.')
打开文件可以看到:
read()方法从一个打开的文件中读取一个字符串。需要重点注意的是,Python字符串可以是二进制数据,而不是仅仅是文字。
在这里,被传递的参数是要从已打开文件中读取的字节计数。该方法从文件的开头开始读入,如果没有传入count,它会尝试尽可能多地读取更多的内容,很可能是直到文件的末尾。
file=open('love.txt','r+')
file.write('tell me where do i find ,some one like you girl.')
txt=file.read(10)
i=1
while(len(txt)>0):
print('第'+str(i)+'次读取到的数据:', txt ,'当前位置:',file.tell())
i=i+1
if(i==10):
file.seek(0,0)#参数1.设置偏移量 偏移几个字节 参数2. 0 1 2 开始 当前 结尾
txt=file.read(5)
结果为:
第1次读取到的数据: tell me wh 当前位置: 58
第2次读取到的数据: ere d 当前位置: 63
第3次读取到的数据: o i f 当前位置: 68
第4次读取到的数据: ind , 当前位置: 73
第5次读取到的数据: some 当前位置: 78
第6次读取到的数据: one l 当前位置: 83
第7次读取到的数据: ike y 当前位置: 88
第8次读取到的数据: ou gi 当前位置: 93
第9次读取到的数据: rl. 当前位置: 96
第10次读取到的数据: tell 当前位置: 5
第11次读取到的数据: me wh 当前位置: 10
第12次读取到的数据: ere d 当前位置: 15
第13次读取到的数据: o i f 当前位置: 20
第14次读取到的数据: ind , 当前位置: 25
第15次读取到的数据: some 当前位置: 30
第16次读取到的数据: one l 当前位置: 35
第17次读取到的数据: ike y 当前位置: 40
第18次读取到的数据: ou gi 当前位置: 45
第19次读取到的数据: rl.te 当前位置: 50
第20次读取到的数据: ll me 当前位置: 55
第21次读取到的数据: wher 当前位置: 60
第22次读取到的数据: e do 当前位置: 65
第23次读取到的数据: i fin 当前位置: 70
第24次读取到的数据: d ,so 当前位置: 75
第25次读取到的数据: me on 当前位置: 80
第26次读取到的数据: e lik 当前位置: 85
第27次读取到的数据: e you 当前位置: 90
第28次读取到的数据: girl 当前位置: 95
第29次读取到的数据: . 当前位置: 96
进程已结束,退出代码0
Python的os模块提供了帮你执行文件处理操作的方法,比如重命名和删除文件。我们可以导入这个模块然后调用相关的各种功能。
rename()方法:
rename()方法需要两个参数,当前的文件名和新文件名。
import os
os.rename('love.txt','lo.txt')
print('修改成功')
结果:
修改成功
进程已结束,退出代码0
可以用remove()方法删除文件,需要提供要删除的文件名作为参数。
os.remove('lo.txt')
可以使用os模块的mkdir()方法在当前目录下创建新的目录们。需要提供一个包含了要创建的目录名称的参数。
语法:
os.mkdir('untitled')成功创建新的目录
可以用chdir()方法来改变当前的目录。chdir()方法需要的一个参数是你想设成当前目录的目录名称
os.chdir('./文件名')#点代表当前目录
rmdir()方法删除目录,目录名称以参数传递。在删除这个目录之前,它的所有内容应该先被清除。
os.rmdir('文件名')*removedirs()方法
os.removedirs('/文件名')#当前空文件夹可删除 便尝试删除父级空文件夹 若可删除 便执行读取一个网页源代码
from urllib import request #请求打开一个url response=request.urlopen('https://www.csdn.net/') #在本地创建一个文件 xml=open(R'C:\Users\Administrator\PycharmProjects\untitled\lo.txt','w+',encoding='utf-8') #把服务器的响应处理 html=response.read() xml.write(str(html.decode('utf-8'))) print('读取完毕')
循环读一个文件并对其内容复制替换
foo=open(R'C:\Users\Administrator\PycharmProjects\untitled\lo.txt','r+',encoding='utf-8'); #循环读取 以行为单位 text=foo.readline() while len(text)!=0: print(text,end=' ') text=foo.readline() print(text) fop=open(R'E:\新建文件夹\说明.txt','w+',encoding='utf-8') lines=foo.readlines() print(lines) print(type(lines)) print(len(lines)) for li in lines: fop.write(li.replace('python','java')) print('复制 替换')
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。