文件操作
mode: r w 纯文本文件
rb wb 二进制字节文件:纯文本,图片,音乐,电影
文件上传:
保存log
系统函数:
open(file,mode,buffering,encodeing)
读:
open(path/filename,‘rt’) 返回值是一个流:stream(管道)
注意:如果传递的path/filename有误,则会报错:FileNotFoundError
read()读取所有行
readline()每次读取一行内容
readlines()读取所有的行的内容,并将其放到列表中
readable() 判断是否可读取
#open的默认是rt,读取文本文档,如果是图片,就不能使用默认的读取方式
stream=open(r'aa.txt')
container=stream.read()
print(container)
#判断文件是否可以读取,返回true或者false
result=stream.readable()
print(result)
line=stream.readline()
print(line)
#只读取一行内容
while True:
line=stream.readline()
print(line)
if not line:
break
#将数据保存到列表中
lines=stream.readlines()
print(lines)
for i in lines:
print(i)
读出的文件是r 还是w
取决于open中的model
stream=open(r’aa.txt’,‘w’)
方法:
write()
注意:write(内容)每次关闭打开后再写都会重写文件的内容
stream=open(r'aa.txt','w')
s='''
你好
欢迎来到你的学校
你的朋友
'''
result=stream.write(s)
print(result)
stream.close()
stream=open('aa.txt','w')
result=stream.write('龙武')
print(result)
列表可迭代的,可以在写入的时候加入多个要写入的内容,不会换行
write(Iterable)没有换行的效果
stream.writelines([‘独身京东健康借款方\n’,‘dehrjhjk\n’]) 自己加换行
如果mode=‘a’,不会删除原来的内容,在原来的文件基础上去追加
stream=open(r'aa.txt','w')
stream.write('龙武')
stream.writelines(['独身京东健康借款方','dehrjhjk'])
print(result)
stream=open(r'aa.txt','w')
stream.write('龙武')
stream.writelines(['独身京东健康借款方\n','dehrjhjk\n'])
print(result)
stream=open(r'aa.txt','w')
s='''
你好
欢迎来到你的学校
你的朋友
'''
result=stream.write(s)
print(result)
stream.close()
stream=open(r'aa.txt','a')
stream.write('龙武')
stream.writelines(['独身京东健康借款方\n','dehrjhjk\n'])
print(result)
文件复制
在添加文件复制的目的路径时,注意添加完整的路径
#stream=open(r'aaa.jpg','rb')
with open(r'aaa.jpg','rb') as stream:
container=stream.read()#读取文件内容
with open(r'E:\python\python_practice\copy\aaa.jpg','wb') as wstream:
wstream.write(container)
print('文件复制完成')
批量复制
os模块
import os
print(os.path)
path=os.path.dirname(__file__) #获取当前文件所在的文件目录(绝对路径)
print(path)
print(type(path))
with open(r'aaa.jpg','rb') as stream:
container=stream.read()#读取文件内容
path=os.path.dirname(__file__)
path1=os.path.join(path,'a1.jpg')
with open(path1,'wb') as wstream:
wstream.write(container)
print('文件复制完成')
原名的形式保存
with open(r'E:\python\python_practice\aaa.jpg','rb') as stream:
container=stream.read()#读取文件内容
print(stream.name)
file=stream.name
filename=file[file.rfind('\\')+1:]#截取文件名
path=os.path.dirname(__file__)
path1=os.path.join(path,filename)
with open(path1,'wb') as wstream:
wstream.write(container)
print('文件复制完成')
os模块下的方法:
os.getcwd()获取当前目录
os.listdir() 浏览文件夹
os.mkdir()创建文件夹
os.remdir()删除空的文件夹
os.remove()删除文件
os.chdir()切换目录
#切换目录
f=os.chdir(r'E:\python\python_practice')
path=os.getcwd()
print(path)
open不能打开一个文件夹,必须要定义到一个文件
有多种不同文件,用rb或者wb来读和写。
import os
src_path='E:\python\python_practice\copy1'
target_path='E:\python\python_practice\copy'
def copy(src,target):
#判断是不是文件夹
if os.path.isdir(src) and os.path.isdir(target):
#浏览文件夹,取东西
filelist=os.listdir(src)
for file in filelist:
path=os.path.join(src,file)
with open(path,'rb')as rstream:
container=rstream.read()
path1=os.path.join(target, file)
with open(path1,'wb') as wstream:
wstream.write(container)
else:
print('复制完毕!')
copy(src_path, target_path)
文件:
文件操作:
open()
path.filename:
path:
绝对路径:E:\python\python_practice
相对路径:相对当前文件的路径。返回上层目录:…/
mode:
读:rb r
写:wb w
with open(file,mode) as stream :
操作代码
os模块:
os.path:常用函数
dirname() 获取指定文件的目录
join()拼接获取新的路径
split() 分割(文件目录,文件名)
splittext() 分割(文件目录\文件名,文件扩展名)
import os
src_path='E:\python\python_practice\copy1'
target_path='E:\python\python_practice\copy'
def copy(src_path,target_path):
#获取文件夹内容
filelist=os.listdir(src_path)
print(filelist)
#遍历列表内容
for file in filelist:
#拼接路径
path=os.path.join(src_path, file)
#判断是否是文件夹
if os.path.isdir(path):
#递归调用
copy(path, target_path)
#os.chdir(path)
#os.listdir(path)
#filelist1=os.listdir(path)
#for file1 in filelist1:
# path=os.path.join(src_path, file)
else:
#不是文件夹直接复制
with open(path,'rb') as rstream:
container=rstream.read()
path1=os.path.join(target_path,file)
with open(path1,'wb') as wstream:
wstream.write(container)
else:
print('复制')
copy(src_path,target_path)
持久化保存:文件
list 元组,字典——》内存
#用户注册
def register():
username=input('输入用户名:')
password=input('输入密码:')
repassword=input('输入确认密码:')
if password==repassword:
#保存信息
with open(r'E:\python\python_practice\copy\user.txt','a') as wstream:
wstream.write('{}{}\n'.format(username, password))
print('用户注册成功!')
else:
print('密码不一致!')
def login():
username=input('输入用户名:')
password=input('输入密码:')
if username and password:
with open(r'E:\python\python_practice\copy\user.txt')as rstream:
while True:
user=rstream.readline()
if not user:
print('用户名或者密码输入有误!')
break
input_user='{}{}\n'.format(username, password)
if user==input_user:
print('用户登录成功!')
break
def show_books():
print('............图书馆的图书有:·············')
with open(r'E:\python\python_practice\copy\book.txt','r') as rstream:
books=rstream.readlines()
for book in books:
print(book,end='')
语法错误和异常
语法错误:可以避免的
异常:运行时才会报错
def chu(a,b):
return a/b
格式:
try:
可能出现异常的代码
except:
如果有异常执行的代码
finally:
无论是否存在异常都会被执行的代码
情况1:
try:
有可能会出现多种异常
except 异常类型1:
print()
except 异常类型2:
pass
except Exception as err:
print(err) ---------》err的内容就是错误的原因
pop from empty list
如果是多个except,异常类型的顺序需要注意,最大的Exception要放到最后