Python基础系列:(六)Python文件路径处理、时间模块、异常处理


前言

Python系列文章主要是记录自己学习成果及知识输出整合,提供一个温故而知新的场所。
本篇主要记录Python的文件时间模块、异常处理、文件路径处理。


一、os模块常用的方法

  • 创建目录
  • 创建多级目录
  • 删除目录
  • 重命名文件及目录
  • 验证文件权限
  • 文件路径
    需要使用os模块,需先导入模块:import os

# 创建目录
def make_dir(path):
	'''创建目录'''
	os.mkdir(path)
	print(f'创建目录:{path}成功')

e = 'E:\tutou'  # tutou是之前没有的目录
make_dir(e)

# 创建多级目录
def make_many_dirs(path):
	""" 创建多级目录 """
	os.makedirs(path)
	print(f'创建多级目录:{path}成功')

e = 'E:\A\B\C' # A、B、C是之前没有的目录
make_many_dirs(e)

# 删除空目录
def del_empty_dir(path):
	""" 删除空目录 """
	os.rmdir(path)
	print(f'删除空目录:{path}成功')

del_empty_dir(e)


# 删除非空目录	
def del_not_empty_dir(path):
	""" 删除非空目录 """
	# 这里不能使用os模块,需使用shutil
	shutil.rmtree(path)
	print(f'删除非空目录:{path}成功')

e = 'E:\A\B'
del_not_empty_dir(e)

# 重命名文件或文件名
def rename_dir(old, new):
	""" 重命名 """
	os.rename(old, new)
	print(f'重命名文件{old}{new}成功')

old = 'E:\A\B\C'
new = 'E:\A\B\D'
rename_dir(old, new)

# 验证文件权限 os.access(path, mode)
# mode:os.F_OK(是否存在)、os.R_OK(可读)、os.W_OK(可写)、os.X_OK(可执行)
# 验证文件或文件夹是否存在
d_path = 'E:\A\B\D'
value = os.access(d_path, mode=os.F_OK)
print(value)

# 获取文件路径
path = r'E:\A\B\D\test1.docx'
# 判断是否为目录
os.path.isdir(path)
# 判断是否为文件
os.path.isfile(path)
# 获取当前路径
os.getcwd()
# 获取绝对路径
os.path.abspath(path)
# 获取路径的目录
os.path.dirname(path)
# 判断路径是否存在,存在返回True
os.path.lexists(path)
# 进行路径分割,会将文件和目录进行分割,返回一个元组 E:\A\B\D\test1.docx ==> ('E:\A\B\D', 'test1.docx')
os.path.split(path)
# 对文件和路径进行拼接
e_path = 'E:\A\B\D'
file = 'test1.docx'
os.path.join(e_path, file)

二、时间模块

  • time模块
"""
time模块
"""
# 获取时间戳:从时间元年(1970 1 1 00:00:00)到现在经过的秒数
print(time.time())
# 获取格式化时间对象:是九个字段组成的
print(time.localtime())
# 格式化时间对象和字符串之间的转换
s = time.strftime("%Y %m %d %H:%M:%S", time.localtime())
print(s)
# 把时间字符串转换成时间对象
s = time.strptime('2010 10 10','%Y %m %d')
print(s)
# 把时间戳转为时间元组
time_tulp = time.localtime(1633009202)
print(time_tulp)
# 把时间元组转为时间戳
times = time.mktime(time_tulp)
print(times)
# 截取时间元组中的部分
year = time.localtime().tm_year  # 取年
month = time.localtime().tm_mon  # 取月
day = time.localtime().tm_mday  # 日
hour = time.localtime().tm_hour  # 时
min1 = time.localtime().tm_min  # 分
sec = time.localtime().tm_sec  # 秒
wday = time.localtime().tm_wday  # 当前周的第几天
yday = time.localtime().tm_yday  # 当前年的第几天
isdst = time.localtime().tm_isdst  # 是否夏令时(1是,0不是)

  • datetime模块
"""
datetime模块
"""
import datetime

# date类:年月日
c = datetime.date(2010, 10, 10)
print(c)
# 获取date对象的各个属性
print(c.year, c.month, c.day)

# time类:时分秒
t = datetime.time(15, 13, 22)
print(t)
print(t.hour, t.minute, t.second)

# 把时间元组转换成时间格式
dr = datetime.datetime(2010, 11, 11, 11, 11, 11)
print(dr)

# datetime中的类,主要是用于数学计算的
# timedelta:时间的变化量
td = datetime.timedelta(days=1)
tr = datetime.timedelta(seconds=2)
print(tr)
# 参与数学运算
# 创建时间对象
# date, datetime ,timedelta
d = datetime.date(2010, 10, 10)
res = d+td
print(res)

# 时间变化量会产生进位
as12 = datetime.datetime(2010, 10, 10, 15, 22, 59)
res = as12+tr
print(res)

# 示例:计算某一年的二月份有多少天
# 普通计算:根据年份计算是否是闰年,是:29天  否:28天
# 用datetime模块
# 首先创建出指定年份的3月1日,然后让他往前走一天
year = int(input('请输入您需要查询的年份:'))
dt = datetime.timedelta(days=1)
de = datetime.date(year, 3, 1)
res = de - dt
print(res)
  • calendar模块
"""
日历模块
"""
import calendar

# 获取年历
value = calendar.calendar(2019)
print(value)
# 获取某年某月的日历
value = calendar.month(2019, 2)
print(value)
# 是否闰年
v = calendar.isleap(2020)
print(v)
# 返回给定日期是周几
"""
周一  返回0
周二  返回1
周三  返回2
.	以此类推
.
.
周日  返回6
"""
r = calendar.weekday(2022, 7, 5)
print(r)

三、异常处理

Python有两种错误很容易辨认:语法错误和异常
常见异常错误:

常见异常错误释义
IndentationError缩进错误
SyntaxError语法错误
NameError名称错误
ZeroDivisionError0不能做除数
TypeError类型错误
  • 异常处理,可以使用try except语句来捕获异常,if也可处理一些已知(预估到)的异常情况,但try结构,可以捕获一些未考虑到的异常情况。
# 语法结构1:执行try语句,如果有异常会执行except里面的代码,如果无异常就会执行else里面的代码,不管try语句有没有异常,都会去执行finally语句。
try:
	执行代码
except:
	发生异常执行的代码
else:
	没有异常执行的代码
finally:
	执行代码

# 语法结构2:执行try语句,如果有异常会执行except里面的代码,如果无异常就会执行else里面的代码
try:
	执行代码
except:
	发生异常执行的代码
else:
	没有异常执行的代码

# 语法结构3
try:
	执行代码
except:
	发生异常执行的代码

# 根据用户的输入,求和
def sum_user(*args):
	try:
		sum = 0
		for num in args:
			sum = sum +num
	except:
		print('输入的不是数字')
	else:
		print(f'求和:{sum},计算完成')
sum_user('a', 2, 1)  # 如果不加try、except捕获异常结构,这么传参会报错

# 使用8除以用户输入的整数,并且输出结果
def sample():
	try:
		num = int(input('请输入一个整数的除数:'))
		value = 8/num
		print(f'8除以{num}为:{value}')
	except ZeroDivisionError:
		print('除数不能为0')
	except Exception as ex:  # 除了以上已知的异常,获取其他无法预知的异常
		print(f'未知的错误:{ex}')

sample()

  • 抛出异常raise:捕获异常是抓到程序报出的一些错误不是代码中有意识设定的异常,抛出异常是代码设定主动引发的异常。
    使用场景:根据程序需要,需要主动抛出异常,中断代码的执行
"""
用户密码长度小于8,抛出异常
"""
def input_pw():
	pw = input('请输入密码:')
	if len(pw) >= 8:
		return pw
	# 正确输入的规则告诉到用户(主动抛出异常)
	ex = Exception('密码长度不对,密码长度不能小于8')
	raise ex

input_pw()
  • traceback 常看异常
try:
	1/0
except:
	# 打印异常,可将异常输入到文件
	traceback.print_exc(file=open('文件路径', 'w+'))
	# 返回异常信息
	error = traceback.format_exc()
	print(error)


总结

以上就是文章要表达的内容,本文简单介绍了Python文件路径处理、时间模块、异常处理的概念以及应用。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值