Python基础IO操作

声明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)

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/CSNN2019/article/details/114558114
今日推荐