一个修改单层目录下文件扩展名的程序
动机是懒得一个个修改哔哩哔哩手机客户端缓存的 *.blv 文件为 *.flv 文件合并暂不涉及
刚刚网络首播的《你的名字》为例,文件夹下一共17个blv文件,以及一些其他类型的文件:
处理程序是改编的(参看引用地址),很短小:
# 搜寻单层目录下的blv文件并将其转换为flv文件 # 用于哔哩哔哩缓存视频blv格式转换后合并(本例程只是做个小小的扩展名转换) import os import os.path ext_from = '.blv' ext_to = '.flv' read_file_dir = input(r'请输入要修改文件扩展名的路径:') files = os.listdir(read_file_dir) # 列出当前目录下所有的文件 for filename in files: portion = os.path.splitext(filename) # 分离文件名字和后缀 if portion[1] ==ext_from: #检测扩展名 newname = portion[0]+ext_to #改新的新扩展名 os.chdir(read_file_dir) os.rename(filename,newname) print(os.path.basename(filename)+' -> '+ os.path.basename(newname))
处理结果:
0.blv -> 0.flv 1.blv -> 1.flv 10.blv -> 10.flv ……
改完扩展名后结果图:
Python 调试方法
1、print
print('here') # 可以发现某段逻辑是否执行 # 打印出变量的内容
2、assert
assert false, 'blabla' # 如果条件不成立,则打印出 'blabla' 并抛出AssertionError异常
3、debugger
可以通过 pdb、IDE 等工具进行调试。
调试的具体方法这里不展开。
Python 中有两个内置方法在这里也很有帮助:
#!/usr/bin/python import time import calendar """ 时间元组(年、月、日、时、分、秒、一周的第几日、一年的第几日、夏令时) 一周的第几日: 0-6 一年的第几日: 1-366 夏令时: -1, 0, 1 """ """ python中时间日期格式化符号: ------------------------------------ %y 两位数的年份表示(00-99) %Y 四位数的年份表示(000-9999) %m 月份(01-12) %d 月内中的一天(0-31) %H 24小时制小时数(0-23) %I 12小时制小时数(01-12) %M 分钟数(00=59) %S 秒(00-59) %a 本地简化星期名称 %A 本地完整星期名称 %b 本地简化的月份名称 %B 本地完整的月份名称 %c 本地相应的日期表示和时间表示 %j 年内的一天(001-366) %p 本地A.M.或P.M.的等价符 %U 一年中的星期数(00-53)星期天为星期的开始 %w 星期(0-6),星期天为星期的开始 %W 一年中的星期数(00-53)星期一为星期的开始 %x 本地相应的日期表示 %X 本地相应的时间表示 %Z 当前时区的名称 # 乱码 %% %号本身 """ # (1)当前时间戳 # 1538271871.226226 time.time() # (2)时间戳 → 时间元组,默认为当前时间 # time.struct_time(tm_year=2018, tm_mon=9, tm_mday=3, tm_hour=9, tm_min=4, tm_sec=1, tm_wday=6, tm_yday=246, tm_isdst=0) time.localtime() time.localtime(1538271871.226226) # (3)时间戳 → 可视化时间 # time.ctime(时间戳),默认为当前时间 time.ctime(1538271871.226226) # (4)时间元组 → 时间戳 # 1538271871 time.mktime((2018, 9, 30, 9, 44, 31, 6, 273, 0)) # (5)时间元组 → 可视化时间 # time.asctime(时间元组),默认为当前时间 time.asctime() time.asctime((2018, 9, 30, 9, 44, 31, 6, 273, 0)) time.asctime(time.localtime(1538271871.226226)) # (6)时间元组 → 可视化时间(定制) # time.strftime(要转换成的格式,时间元组) time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) # (7)可视化时间(定制) → 时间元祖 # time.strptime(时间字符串,时间格式) print(time.strptime('2018-9-30 11:32:23', '%Y-%m-%d %H:%M:%S')) # (8)浮点数秒数,用于衡量不同程序的耗时,前后两次调用的时间差 time.clock()
perf_counter 进度条实例:
import time scale = 50 print("执行开始".center(scale//2,"-")) # .center() 控制输出的样式,宽度为 25//2,即 22,汉字居中,两侧填充 - start = time.perf_counter() # 调用一次 perf_counter(),从计算机系统里随机选一个时间点A,计算其距离当前时间点B1有多少秒。当第二次调用该函数时,默认从第一次调用的时间点A算起,距离当前时间点B2有多少秒。两个函数取差,即实现从时间点B1到B2的计时功能。 for i in range(scale+1): a = '*' * i # i 个长度的 * 符号 b = '.' * (scale-i) # scale-i) 个长度的 . 符号。符号 * 和 . 总长度为50 c = (i/scale)*100 # 显示当前进度,百分之多少 dur = time.perf_counter() - start # 计时,计算进度条走到某一百分比的用时 print("\r{:^3.0f}%[{}->{}]{:.2f}s".format(c,a,b,dur),end='') # \r用来在每次输出完成后,将光标移至行首,这样保证进度条始终在同一行输出,即在一行不断刷新的效果;{:^3.0f},输出格式为居中,占3位,小数点后0位,浮点型数,对应输出的数为c;{},对应输出的数为a;{},对应输出的数为b;{:.2f},输出有两位小数的浮点数,对应输出的数为dur;end='',用来保证不换行,不加这句默认换行。 time.sleep(0.1) # 在输出下一个百分之几的进度前,停止0.1秒 print("\n"+"执行结果".center(scale//2,'-'))
测试输出:
-----------执行开始---------- 24 %[************->......................................]1.24s
在发送带附件的邮件的时候,例程中有一行代码如下:
att1 = MIMEText(open('test.txt', 'rb').read(), 'base64', 'utf-8')
这里的 test.txt 必须是在当前的工作目录下的,所以要时想发送这个附件,需要将这个附件移动到工作目录下。
或者还有一种方法就是,指定文件的路径:
path='D:/test/test.txt' file=open(path,'rb') att1=MIMEText(file.read(),'base64','utf-8')
也可以直接写成如下形式:
att1=MIMEText(open('D:/test/test.txt', 'rb').read(),'base64','utf-8')
感谢您的支持,我会继续努力的!
支付宝扫一扫,即可进行扫码打赏哦
2444Python3 os.rename() 方法
一个修改单层目录下文件扩展名的程序
动机是懒得一个个修改哔哩哔哩手机客户端缓存的 *.blv 文件为 *.flv 文件合并暂不涉及
刚刚网络首播的《你的名字》为例,文件夹下一共17个blv文件,以及一些其他类型的文件:
处理程序是改编的(参看引用地址),很短小:
处理结果:
改完扩展名后结果图:
1182Python3 内置函数
Python 调试方法
1、print
2、assert
3、debugger
可以通过 pdb、IDE 等工具进行调试。
调试的具体方法这里不展开。
Python 中有两个内置方法在这里也很有帮助:
1181Python3 日期和时间
1180Python3 日期和时间
perf_counter 进度条实例:
测试输出:
1179Python3 SMTP发送邮件
在发送带附件的邮件的时候,例程中有一行代码如下:
这里的 test.txt 必须是在当前的工作目录下的,所以要时想发送这个附件,需要将这个附件移动到工作目录下。
或者还有一种方法就是,指定文件的路径:
也可以直接写成如下形式: