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

w6mmgewl  于 2023-05-28  发布在  Linux
关注(0)|答案(1)|浏览(150)

我有一个很长的音频文件列表,其中一些超过一个小时。我使用Jupyter notebook,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'
7kjnsjlb

7kjnsjlb1#

似乎有些结果没有duration
也许可以将其更改为:

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

相关问题