如何解决“无效字面对于int <>用碱10” Python脚本错误

问题描述 投票:-1回答:2

我运行一个脚本,用于将一些媒体文件,当我做的脚本返回错误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

python python-2.7
2个回答
0
投票

也许secs变量为空或包含有空格。检查字符串是否为空,如果你能保证secs的值没有包括的空间。

# Make time human-readable
Line:132 def humanize_time(secs):
    if secs != "":
        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)

0
投票

实现这种功能的正确方法是:

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'
© www.soinside.com 2019 - 2024. All rights reserved.