2016-12-09 12 views
-1

私はPythonに慣れていますが、他の言語では熟練した獣医ですが、なぜdata.dtypeがエラーAttributeError: 'tuple' object has no attribute 'dtype'を投げ、dtype値を得ることができますか?AttributeError: 'tuple'オブジェクトに 'dtype'属性がありません

私はちょうどdata.dtype

コード

import pyaudio 
import sys 
import numpy 
import scipy.io.wavfile 

# Ensures that a file is passed in as an argument 
if len(sys.argv) < 2: 
    print("Plays a wave file.\n\nUsage: %s filename.wav" % sys.argv[0]) 
    sys.exit(-1) 

file = sys.argv[1]; 

# Read the file 
data = scipy.io.wavfile.read(file) 
rate = data[0] 
print data 
print "rate = ", rate 
print data[1] 
print "format = ", data.dtype 

出力

(44100, array([[0, 0], 
     [0, 0], 
     [0, 0], 
     ..., 
     [0, 0], 
     [0, 0], 
     [0, 0]], dtype=int16)) 
rate = 44100 
[[0 0] 
[0 0] 
[0 0] 
..., 
[0 0] 
[0 0] 
[0 0]] 
format = 
Traceback (most recent call last): 
    File "index.py", line 31, in <module> 
    print "format = ", data.dtype 
AttributeError: 'tuple' object has no attribute 'dtype' 
+0

をdata'はタプルと 'はAttributeErrorです'ので:あなたは、あなたが解凍しませんでしたタプルの2番目の要素にアクセスする必要が

data = scipy.io.wavfile.read(file) 

:あなたのコードでは、あなたはこれを持っています "タプル 'オブジェクトには属性' dtype 'がありません。それについては何が分かりませんか? – Julien

+0

'scipy.io.wavfile.read'は' dtype'属性を持たないタプルを返します。ああ、すべてのステートメントをセミコロンで終了する必要はありません。 – TigerhawkT3

+0

質問が更新されました。 – Catfish

答えて

1

あなたはこのコードを持ってブログが違いを持っ​​て行うことができるはずのように見えるthisブログから:それはあなたのコードではない間に、scipy.io.wavfile.read()呼び出しの結果を2つの変数に解凍します。 snddtypeを有することを意味する

sampFreq, snd = wavfile.read('440_sine.wav') 

  vvv 
print data[1] 
print "format = ", data[1].dtype 
         ^^^ 
関連する問題