类型错误:';int';对象在python的列表中不可下标

类型错误:';int';对象在python的列表中不可下标,python,arrays,error-handling,Python,Arrays,Error Handling,我得到一个TypeError:在下面的代码中,行sig\u data=sig\u data[0:file\u length\u num]上的“int”对象不可下标- def create_slice_from_wav(file_path, file_len, slice_len, step_size): #read in wav file samp_freq, sig_data = sf.read(file_path) #convert file_length from min

我得到一个TypeError:在下面的代码中,行
sig\u data=sig\u data[0:file\u length\u num]
上的“int”对象不可下标-

def create_slice_from_wav(file_path, file_len, slice_len, step_size):
  #read in wav file
  samp_freq, sig_data = sf.read(file_path)
  
  #convert file_length from min to sample numbers
  file_length_num = 5*samp_freq*60
  
  #convert slice_len from ms to sample numbers
  slice_sample_num = slice_len*samp_freq/1000
  
  #use only slices within file_length
  sig_data = sig_data[0:file_length_num]
  
  #determine number of samples and length
  n_samples = sig_data.shape[0]
  sig_len = n_samples/samp_freq
  print('Length: ' + str(sig_len) + ' sec')

似乎
sig_data
在代码中是一个int。你不能对一个int进行迭代,它必须是一个int的列表/数组等等。

在Python(以及我所知道的所有编程语言)中,不可能为整型数据类型指定索引。 您可以假设
sig_data
是作为列表(或元组)读入的,但实际上,它是作为整数捕获的。 由于变量
sig_data
的计算结果为整数,因此出现该错误


您可以共享文件的内容吗?

这里,sig_数据是一个整数,但我假设您认为sig_数据是一个列表。问题来自这样一个事实,即不允许对整数进行切片,从而导致错误。可以使用type(sig_数据)轻松找到sig_数据的类型;你会发现它是一个int

注意:如果您不理解subscriptable的含义,请查看以下内容:

从中,它看起来像是
sf.read()
将输出返回元组第一个元素的数据和第二个元素的采样率。这意味着您已经颠倒了元组顺序


如果您将代码更改为
sig\u data,samp\u freq=sf.read(file\u path)
它应该可以工作。

尝试查看
type(sig\u data)
的输出,它很可能是一个整数……他刚刚颠倒了代码上的返回元组。看看我的答案,你会看到正确的解决方案。谢谢@jpnadas的澄清。看来我只是解决了症状,但你找到了治疗方法。