Python 3 教程 在线

1158Python3 错误和异常

异常是可以向后推移的,所以我们一般看到的报错的位置是相对靠后的,下例:

def test1():
    print('test1-1')
    print(num)
    print('test2-2')
def test2():
    print('test2-1')
    test1()
    print('test2-2')
def test3():
    try:
        print('test3-1')
        test1()
        print('test3-2')
    except Exception as result:
        print('检测出异常{}'.format(result))
    print('test3-2')
test3()
print('-------------')
test2()

1157Python3 错误和异常

在 python3 中,处理带有参数的异常的方法如下:

# 定义函数
def temp_convert(var):
    try:
        return int(var)
    except (ValueError) as Argument:
        print ("参数没有包含数字\n", Argument)

# 调用函数
temp_convert("xyz");

1156Python3 OS

批量修改文件名

python 对文件进行批量改名用到的是 os 模块中的 listdir 方法和 rename 方法。

  • os.listdir(dir) : 获取指定目录下的所有子目录和文件名
  • os.rename(原文件名,新文件名) : 对文件或目录改名

把混乱的文件名改成有序的文件名:

import os
path=input('请输入文件路径(结尾加上/):')       

#获取该目录下所有文件,存入列表中
f=os.listdir(path)

n=0
for i in f:
    
    #设置旧文件名(就是路径+文件名)
    oldname=path+f[n]
    
    #设置新文件名
    newname=path+'a'+str(n+1)+'.JPG'
    
    #用os模块中的rename方法对文件改名
    os.rename(oldname,newname)
    print(oldname,'======>',newname)
    
    n+=1

1155Python3 OS

显示所有视频格式文件,mp4,avi,rmvb

import os

def search_file(start_dir, target) :
    os.chdir(start_dir)
    
    for each_file in os.listdir(os.curdir) :
        ext = os.path.splitext(each_file)[1]
        if ext in target :
            vedio_list.append(os.getcwd() + os.sep + each_file + os.linesep) 
        if os.path.isdir(each_file) :
            search_file(each_file, target) # 递归调用
            os.chdir(os.pardir) # 递归调用后切记返回上一层目录

start_dir = input('请输入待查找的初始目录:')
program_dir = os.getcwd()

target = ['.mp4', '.avi', '.rmvb']
vedio_list = []

search_file(start_dir, target)

f = open(program_dir + os.sep + 'vedioList.txt', 'w')
f.writelines(vedio_list)
f.close()

1154Python3 OS

import os
import os.path
"""获取指定目录及其子目录下的 py 文件路径说明:l 用于存储找到的 py 文件路径 get_py 函数,递归查找并存储 py 文件路径于 l"""
l = []
def get_py(path,l):
    fileList = os.listdir(path)   #获取path目录下所有文件
    for filename in fileList:
        pathTmp = os.path.join(path,filename)   #获取path与filename组合后的路径
        if os.path.isdir(pathTmp):   #如果是目录
            get_py(pathTmp,l)        #则递归查找
        elif filename[-3:].upper()=='.PY':   #不是目录,则比较后缀名
            l.append(pathTmp)
path = input('请输入路径:').strip()
get_py(path,l)
print('在%s目录及其子目录下找到%d个py文件\n分别为:\n'%(path,len(l)))
for filepath in l:
    print(filepath+'\n')