03、Python基础

主要内容:

 

  • 文件与文件夹的操作
  • 异常处理

一、文件与文件夹的操作

#test.txt文件

写入文件内容新内容
第二行内容文件
第三行内容是这样的
第四行内容有时是这样的

打开文件

open方法:参数有:文件名(有绝对路径和相对路径),打开模式,寄存区大小,编码方式

a=open('test.txt','r',buffering=0,encoding='utf-8')

打开模式有:

r:只读模式,文件不存在会提示错误

w:只写模式,文件存在,则会被覆盖,不存在,则创建文件

a:追加模式,文件存在,则会打开,不存在,则会创建文件

r+:读写模式,将指针调到文件内容的头部

w+:读写模式,文件内容存在,则会被覆盖,不存在,则会写入

a+:追加读写模式,将指针调到文件内容的末尾

buffering 寄存缓冲大小:

      =0:不会寄存

      =1:访问文件会寄存行

      >1:寄存缓冲大小

      <0:寄存缓冲大小为系统默认

读取数据

read(num)方法:读取文件内容,没有参数,则读取文件所有内容,num指定读取长度

a=open('test.txt','r',encoding='utf-8')
count=a.read() #读取所有内容
rlen=a.read(10) #读取前10个字符
print(count)
print(rlen)

readlines 方法:可以按行的方式,把整个文件的内容一次性读取,返回的是一个列表,每一行为列表里的一个元素。

b=open('test.txt','r+',encoding='utf-8')
rline=b.readlines() #按行读取
print(rline) 
b.close()

#输出的内容是:
['写入文件内容新内容\n', '第二行内容文件\n', '第三行内容是这样的\n', '第四行内容有时是这样的']

结合open方法和for循环语句,实现文件内容逐行输出

file=open('test.txt','r',encoding='utf-8')
for line in file:
    print(line)
file.close()

写入数据

write(str参数) 方法:将字符串写入文件中

a=open('test.txt','w',encoding='utf-8')
a.write('写入文件内容') #写入字符串内容
a.close()

writelines(list参数)方法:将列表中的字符串写入文件中

a=open('test.txt','w',encoding='utf-8')
slist=['添加1','添加2','添加3']
a.writelines(slist)
a.close()

关闭文件

 

close 方法:关闭打开的文件

 

另:为了避免程序发生错误,导致close方法未被执行,可以使用 with关键字来打开文件。

with open('test.txt','r',encoding='utf-8') as file:   #会自动判断什么时候将文件关闭
    data=file.readlines()
    print(data)

文件夹的操作(需要引用os模块)

os.getcwd()  #获取当前路径
os.listdir(path) #获取指定路径下的文件或文件夹名字的列表
os.path.isfile(path) #判断是否是一个文件

os.path.exists(path) #判断文件是否存在
os.rename('旧文件名','新文件名') #重命名
eg:os.rename('test.txt','newtest.txt')
os.remove(path) #删除文件

os.mkdir(文件夹名称) #创建文件夹
os.makedirs(主文件夹/次级文件夹)  #创建多级文件夹
os.rmdir(path) #删除文件夹

二、异常处理

格式:

try:
    语句
except 异常类型: #捕获异常
    异常处理的代码
except 异常类型 as 别名:
    print(别名) #会输出异常的具体信息
except (异常类型1,异常类型2,...) as 别名:
    print(别名)
else:
    没有异常处理时的代码
finally:
    无论是否有异常,最终执行的代码

异常类型:

————————————————————————

Exception:所有异常的基类

NameError:没有声明的变量

ZeroDivisionError:除数为0

SyntaxError:语法错误

IndexError:索引超出序列范围

KeyError:请求一个不存的字典关键字

IOError:输入输出错误

AttributeError:未知对象属性

ValueError:参数类型错误

EOFError:不期望的文件或输入结束

————————————————————————

assert 断言语句:当判断表达式为真时,什么都不做,为假时,抛出异常

格式:assert 表达式[,reason

try:
    assert 1==3,‘1 is not equal 3!’
except AssertionError,reason:
    print('%s:%s'%(reason.__class__.__name__,reason))  #输出:Assertion:1 is not equal 3 !   

with 上下文关联语句:目的是从流程图中把try、except、finally关键字和资源分配释放相关的代码全部去掉。

格式:with context_expr as 别名

with open('test.txt','r') as f:
    for line in f:
         print(line)

raise 可以主动抛出一个指定的异常

格式:raise 异常类型[,arg(抛出异常自定义的信息)

sys模块回溯异常

import sys
try:
    代码块
except:
    tuple=sys.exc_info()
    print(tuple)

其中,sys.exc_info方法返回的是一个三元组(type异常类型,value 异常信息,traceback包含调用栈信息对象)

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

莱斯笔记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值