文章目录
声明mode
‘r’ open for reading(default)
‘w’ open for writing ,truncating the file first
‘x’ create a new file and open it for writing
‘a’ open for writing,appending to the end of the file if it exists
‘b’ binary mode
‘t’ text mode(default)
‘+’ open a disk file for updating(reading and writing)
‘U’ universal newline mode(deprecated)
读操作
readable():
stream=open(r'a.txt')
result=stream.readable()#代表能不能的意思(判断是否可以读取,True能读,flase不能读)
print(result)
read():
stream=open(r'a.txt')
container=stream.read()
print(container)
注意:
open()
默认是gbk编码,如果txt文件保存格式不是ANSI
进行读取是会有如下报错产生
那么此时有两种解决方案,
第一种:把读取的文件编码设置为ANSI,
第二种:不改文件编码,直接在open函数后面加上encoding=‘utf-8’
stream=open(r'a.txt',encoding='utf-8')
#result=stream.readable()#代表能不能的意思(判断是否可以读取,True能读,flase不能读)
line=stream.readlines()
for i in line:
print(i)
readline():
stream=open(r'a.txt')
container=stream.readline()
print(container)
stream=open(r'a.txt')
#result=stream.readable()#代表能不能的意思(判断是否可以读取,True能读,flase不能读)
while True:
line=stream.readline()
print(line)
if not line:
break
(因为本身有换行符,然后readline读取出来后,又自动加了一个换行符,所以就两个换行符)
readlines():
stream=open(r'a.txt')
#result=stream.readable()#代表能不能的意思(判断是否可以读取,True能读,flase不能读)
line=stream.readlines()
print(line)
印证着readline中的|\n
stream=open(r'a.txt')
#result=stream.readable()#代表能不能的意思(判断是否可以读取,True能读,flase不能读)
line=stream.readlines()
for i in line:
print(i)
读:
open(path/filename,'rt')
------->返回值:stream(管道)
container=stream.read()
---->读取管中内容
注意:如果传递的path/filename
有误,则会报错:FileNotFoundError
读取jpg
注意:open默认模式是’rt’,也就是读取文本文档,也就是把所有的二进制都转成文本文档的形式,所以的话读取图片不能保持默认的形式读取方式
stream=open(r'02.jpg','rb')
line=stream.read()
print(line)
stream=open(r'02.jpg')
line=stream.read()
print(line)
能形成stream流,但是没法进行read,原因的话上面已经说清楚
如果是图片咋不能使用默认的读取方式,应该用mode=‘rb’
总结:
read()读取所有内容
readline()每次读取一行内容
readlines()读取所有的行保存到列表中
readable()判断是否是可读的
写文件
write():
stream=open(r'a.txt','w')
s='''
欢迎来到王者荣耀
敌军还有三秒到达战场
请做好准备'''
result=stream.write(s)
print(result)
stream.close()
mode是’w’表示写操作
方法:
write(内容)每次都会将原来的内容清空,然后再写当前的内容
stream=open(r'a.txt','w')
s='''小彪彪'''
result=stream.write(s)
a='comeon'
result=stream.write(a)
print(result)
stream.close()
并未换行写。那么如何做到换行写呢?
writelines():
从名字是不是一眼看出,换行写?其实不是的,它并不能自动换行,它仅仅只是可迭代而已
stream=open(r'a.txt','w')
s='''小彪彪'''
result=stream.write(s)
a='comeon'
result=stream.writelines([a,a,a,a])
print(result)
stream.close()
stream=open(r'a.txt','w')
s='''小彪彪'''
result=stream.write(s)
a='comeon'
result=stream.writelines([a+'\n',a+'\n',a+'\n',a+'\n'])
print(result)
stream.close()
其实还可以写成这样
result=stream.writelines(['comeon\n','comeon\n','comeon\n','comeon\n'])
不要被这个函数名字所误导,它仅仅只是可以加入一个列表而已
pythonwritelines(iterable)
没有换行的效果,只能单独在里面添加
以追加的形式,即mode为’a’
stream=open(r'a.txt','a')
s='''小彪彪'''
result=stream.write(s)
a='comeon'
result=stream.writelines(['comeon\n','comeon\n','comeon\n','comeon\n'])
print(result)
stream.close()
拷贝操作
拷贝jpg
固定目录
with open(r'02.jpg','rb') as stream:
container=stream.read()
with open(r'03.jpg','wb') as wstream:
wstream.write(container)
当前目录
os.path.dirname(__file__)#获取当前文件所在的文件目录 (绝对目录)
import os
with open(r'02.jpg','rb') as stream:
container=stream.read()
path=os.path.dirname(__file__)
path1=os.path.join(path,'03.jpg')
with open(path1,'wb') as wstream:
wstream.write(container)
os.path
对你的系统里面的东西进行一系列操作
os.path.dirname(__file__)
表示当前文件的目录在哪
os.path.join(path,'')
返回的是拼接后的新路径因为path是个目录,不是文件名
如何获取文件名
stream=open(r'G:\.vs\02.jpg','rb')
line=stream.read()
print(stream.name)
file=stream.name
filename=file[file.rfind('\\')+1:]
print(filename)