1

私はPython(およびプログラミング全般)にかなり慣れていないため、インターネットからMIDIファイルを取得するプログラムを作成しているときに、いくつかの問題に遭遇しました。以下は、2 つの同一のファイルを書き込むと予想されるコードの一部です。

#method one
url = "http://.../asfd.mid"
urllib.urlretrieve(url, "C:\...\this_is_file_one.mid")

#method two
g = urllib2.urlopen(url).read()
open("this_is_file_two.mid", "w").write(g)

方法 1 では有効な midi ファイルが生成されますが、方法 2 では生成されません。16 進エディタで 2 つのファイルを比較したところ、無効なファイル (file_two) には、有効なファイルで発生した各「0A」の前に余分なバイト「0D」が挿入されていることがわかりました。他に違いがあるかどうかを確認するために、少しコピーして貼り付けて比較しましたが、何もポップアップしませんでした。ただし、私が見つけられなかった違いがもっとあった可能性があります。別の URL でも同じ問題が発生します。

私は困惑しています。どんな照明でも大歓迎です。

ありがとう。

4

1 に答える 1

4

urllib.urlretrieve()ファイルを開き、バイナリ モードで保存します。

open("this_is_file_two.mid", "wb").write(g)
于 2011-07-06T05:46:58.623 に答える