python - 如何修复 python 脚本中的“int <> 以 10 为底的无效文字”错误
问题描述
我正在运行一个脚本来转换一些媒体文件,当我这样做时脚本返回错误invalid literal for int<> with base 10: line 132
。这不是我的脚本,也不是作者支持的,这就是我在这里寻求帮助的原因。
# Make time human-readable
def humanize_time(secs): ## Line:132
if secs != "N/A":
mins, secs = divmod(int(secs), 60)
hours, mins = divmod(mins, 60)
return '%02d:%02d:%02d' % (hours, mins, secs)
else:
mins, secs = divmod(30, 60)
hours, mins = divmod(mins, 60)
return '%02d:%02d:%02d' % (hours, mins, secs)
Traceback (most recent call last):
File "C:\conv2mp4-py.py", line 415, in <module>
codec_discovery()
File "C:\conv2mp4-py.py", line 165, in codec_discover
get_duration_temp = humanize_time(head)
File "C:\conv2mp4-py.py", line 132, in humanize_time
mins, secs = divmod(int(secs), 60)
ValueError: invalid literal for int() with base 10: ''
脚本:https ://github.com/BrianDMG/conv2mp4-py/blob/master/conv2mp4-py.py
解决方案
实现此类功能的正确方法是:
def humanize_time(secs=30):
mins, secs = divmod(int(secs), 60)
hours, mins = divmod(mins, 60)
return '%02d:%02d:%02d' % (hours, mins, secs)
但是在这种情况下,您必须注意传递给它的参数。
如果您无法控制输入,则必须实施异常管理:
def humanize_time(secs=30):
try:
mins, secs = divmod(int(secs), 60)
hours, mins = divmod(mins, 60)
return '%02d:%02d:%02d' % (hours, mins, secs)
except (TypeError, ValueError) as e:
raise ValueError("Invalid value for 'secs': '" + str(secs) + "'")
print humanize_time(12) #>> 00:00:12
print humanize_time("a") #>> ValueError: Invalid value for 'secs': 'a'
推荐阅读
- r - 如何使R中的ggplot图形的y轴标签重叠
- c# - 您如何以与其前身 webforms 相同的风格从 appsettings.json 中读取信息?
- validation - Blazor:验证具有相同模型的多个表单
- laravel - 如何在 Docker 中使用 Nginx 为开发机器制作 HTTPS 服务器?
- python-3.x - 无法使用 python 和 selenium 在 youtube 上扩展屏幕
- python - 如何从估计的状态空间模型中获得估计的混合数据?
- python - pygame项目中的项目符号在游戏重新启动时不会删除
- javascript - 查找对象是否存在于 2 个数组之间的最佳方法
- angular - 角 sourceMap 坏了
- python - 有没有办法创建一个适用于一组项目的列表理解函数,移动到程序的下一部分,然后重复