gpt4 book ai didi

python - Python基础知识:需要参数输入帮助,IndexError:列出超出范围的索引

转载 作者:行者123 更新时间:2023-12-02 23:57:05 24 4
gpt4 key购买 nike

我正在尝试测试一个有望从wav文件生成音频声谱图的Python脚本。我假设我需要输入wav的路径,但出现错误:IndexError:尝试在此处输入索引时列出了超出范围的索引:

sr,x = scipy.io.wavfile.read('mySoundFile.wav')

我还在命令行中将路径作为参数进行了尝试,但是我做得不正确。有什么帮助吗?

http://mail.python.org/pipermail/chicago/2010-December/007314.html
"""
Compute and display a spectrogram.
Give WAV file as input
"""
import matplotlib.pyplot as plt
import scipy.io.wavfile
import numpy as np
import sys

wavfile = sys.argv[1]

sr,x = scipy.io.wavfile.read('BeatBoy01.wav')

## Parameters: 10ms step, 30ms window
nstep = int(sr * 0.01)
nwin = int(sr * 0.03)
nfft = nwin

window = np.hamming(nwin)

## will take windows x[n1:n2]. generate
## and loop over n2 such that all frames
## fit within the waveform
nn = range(nwin, len(x), nstep)

X = np.zeros( (len(nn), nfft/2) )

for i,n in enumerate(nn):
xseg = x[n-nwin:n]
z = np.fft.fft(window * xseg, nfft)
X[i,:] = np.log(np.abs(z[:nfft/2]))

plt.imshow(X.T, interpolation='nearest',
origin='lower',
aspect='auto')

plt.show()

最佳答案

您可以使用此try / except来绕过IndexError:

try:
wavefile = sys.argv[1]
except IndexError:
wavfile = 'BeatBoy01.wav'

sr,x = scipy.io.wavfile.read(wavfile)

如果未将任何参数传递给脚本,这将有效地将默认文件设置为 BeatBoy01.wav。请记住, BeatBoy01.wav应该与执行脚本的目录位于同一目录中,以使其正常工作。

为了简化参数解析,请查看 OptParse 库。

关于python - Python基础知识:需要参数输入帮助,IndexError:列出超出范围的索引,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14027601/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com