インメモリファイルオブジェクトの作成方法
2023-11-05 23:47:12
質問内容
pygame mixerで使用するインメモリファイルを作りたいのですが、どのようにすればよいですか?つまり、以下のようなものです。 http://www.pygame.org/docs/ref/music.html#pygame.mixer.music.load のように、load()メソッドがファイルオブジェクトをサポートすると言っています。
import requests
from pygame import mixer
r = requests.get("http://example.com/some_small_file.mp3")
in_memory_file = file(r.content) # something like this
mixer.music.init()
mixer.music.load(in_memory_file)
mixer.music.play()
どのように解決するのですか?
あなたが探しているのは
BytesIO
または
StringIO
クラスはPythonから
io
パッケージで利用可能です。
Python 2
と
パイソン3
. これらは、実際のファイルと全く同じようにコードで使用できる、ファイルのようなインターフェイスを提供します。
StringIO
は、テキストデータを保存するために使用されます。
import io
f = io.StringIO("some initial text data")
BytesIO
はバイナリデータに使用されなければなりません。
import io
f = io.BytesIO(b"\x00\x00\x00\x00\x00\x00\x00\x00\x01\x01\x01\x01\x01\x01")
MP3 ファイルのデータを保存するためには、おそらく
BytesIO
クラスが必要でしょう。サーバへの GET リクエストから初期化するには、次のようにします。
import requests
from pygame import mixer
import io
r = requests.get("http://example.com/somesmallmp3file.mp3")
inmemoryfile = io.BytesIO(r.content)
mixer.music.init()
mixer.music.load(inmemoryfile)
mixer.music.play()
# This will free the memmory from any data
inmemoryfile.close()
追記:どちらのクラスも
IOBase
を継承しているため、コンテキスト・マネージャーとして
with
ステートメントを使用することで、手動で
close()
メソッドを手動で呼び出す必要はありません。
import requests
from pygame import mixer
import io
r = requests.get("http://example.com/somesmallmp3file.mp3")
with io.BytesIO(r.content) as inmemoryfile:
mixer.music.init()
mixer.music.load(inmemoryfile)
mixer.music.play()
関連
-
[解決済み] プログラムの実行やシステムコマンドの呼び出しはどのように行うのですか?
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] ファイルのコピー方法について教えてください。
-
[解決済み] Pythonでファイルやフォルダを削除する方法は?
-
[解決済み] ファイルの内容からJavaの文字列を作成するにはどうすればよいですか?
-
[解決済み】ネストされたディレクトリを安全に作成するには?
-
[解決済み】2つの辞書を1つの式でマージする(辞書の和をとる)には?)
-
[解決済み] なぜ(0-6)は-6=偽なのか?重複
-
[解決済み] Python Logging でログメッセージが2回表示される件
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] 前月の日時オブジェクトを返す
-
[解決済み] googletransがエラー 'NoneType' オブジェクトに 'group' 属性がない、と言って動かなくなった。
-
[解決済み] Pythonの要素別タプル演算(sumなど
-
[解決済み] Python 2.7サポート終了?
-
[解決済み] サブフォルダからのインポートモジュール
-
[解決済み] あるオブジェクトが数であるかどうかを確認する、最もパイソン的な方法は何でしょうか?
-
[解決済み] Django で全てのリクエストヘッダを取得するにはどうすれば良いですか?
-
[解決済み] djangoフレームワークでフォームフィールドから値を取得するには?
-
[解決済み] matplotlib でプロットの軸、目盛、ラベルの色を変更する方法
-
[解決済み] Pandasのデータフレーム内の文字列を'date'データ型に変換するにはどうしたらいいですか?