无法解决TypeError:“ NoneType”和“ int”的实例之间不支持“>”

时间:2019-02-23 04:19:36

标签: linux python-3.x

我的音频文件列表很长,其中一些超过一个小时。我正在使用Jupyter笔记本,Python 3.6和TinyTag库来获取音频的持续时间。我下面的代码遍历文件,如果一个文件长于一个小时,它将把文件分割成一个小时的小片段,剩下的少于一个小时的小片段,并将这些片段复制为fname_1,fname_2等。代码在为我尝试过的以前的数据集工作,但是这次运行了一段时间后,出现以下错误。我不知道这是从哪里来的以及如何解决它,我已经读过类似标题的问题,但是它们的内容不同。预先感谢。

# fpaths is the list of filepaths
for i in range(0,len(fpaths)):
    fpath=fpaths[i]
    fname=os.path.basename(fpath)
    fname0=os.path.splitext(fname)[0] #name without extension
    tag = TinyTag.get(fname)
    if tag.duration > 3600:
        cmd2 = "ffmpeg -i %s -f segment -segment_time 3600 -c copy %s" %(fpath, fname0) + "_%d.wav"
        os.system(cmd2)
        os.remove(fpath)

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-10-79d0ceebf75d> in <module>()
      7     fname0=os.path.splitext(fname)[0]
      8     tag = TinyTag.get(fname)
----> 9     if tag.duration > 3600:
     10         cmd2 = "ffmpeg -i %s -f segment -segment_time 3600 -c copy %s" %(fpath, fname0) + "_%d.wav"
     11         os.system(cmd2)

TypeError: '>' not supported between instances of 'NoneType' and 'int'

1 个答案:

答案 0 :(得分:1)

好像其中一些结果没有duration

也许将其更改为:

if tag.duration and tag.duration > 3600:
    .....