質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

2556閲覧

Pythonの探索システムで詰まっています

monmi_monmi

総合スコア12

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2016/05/09 05:01

編集2016/05/10 07:41

###問題
Pythonで以下サイト様を参考に類似楽曲システムを作っている最中です。
http://aidiary.hatenablog.com/entry/20121014/1350211413
このサイトでは指定したディレクトリ直下のmp3フォルダを探索してそれぞれの形式に変換しています。指定したディレクトリの最下層まで探索してくれたら便利だなぁと思ってコードを作り変えているのですが、うまく組み合わせられません。

###やりたいこと
現在のコードでは、こうなります。
現在の状態
↑これを

理想状態
↑こうしたいです。こうするとmfccファイルとrawファイルが作れます。
コードをどう修正するとmfcc-mp3-raw-...といった感じにできるのでしょう?

###発生している問題・エラーメッセージ
コピー先のパスと保存先のパスが合わないため、.mfcと.rawが作成できない状態です

$ python mp3_to_mfcc.py mp3 mfcc/ raw/ LAME 3.99.5 64bits (http://lame.sf.net) Autoconverting from stereo to mono. Setting encoding to mono mode. Resampling: input 44.1 kHz output 16 kHz . . . sh: raw/mp3/Archive/Benny Green/Jazz at the Bistro/01 Ask Me Now.raw: No such file or directory sh: raw/mp3/Archive/Benny Green/Jazz at the Bistro/01 Ask Me Now.raw: No such file or directory sh: mfcc/mp3/Archive/Benny Green/Jazz at the Bistro/01 Ask Me Now.mfc: No such file or directory

###該当のソースコード
拡張子変換についての関数とかは関係なさそうなので、問題がありそうな部分だけ載せておきます。

Python

1#coding:utf-8 2import os 3import sys 4import shutil 5 6def find_all_files(mp3Dir): 7 for root, dirs, files in os.walk(mp3Dir): 8 yield root 9 for file in files: 10 yield os.path.join(root, file) 11 12 13 14if __name__ == "__main__": 15 if len(sys.argv) != 4: 16 print "usage: python print_mfcc.py [mp3dir] [mfccdir] [rawdir]" 17 sys.exit() 18 19 mp3Dir = sys.argv[1] 20 mfccDir = sys.argv[2] 21 rawDir = sys.argv[3] 22 23 if not os.path.exists(mfccDir): 24 os.mkdir(mfccDir) 25 if not os.path.exists(rawDir): 26 os.mkdir(rawDir) 27 28 shutil.rmtree(mfccDir) 29 shutil.rmtree(rawDir) 30 31 shutil.copytree(mp3Dir, mfccDir, True, ignore = shutil.ignore_patterns('*.mp3')) 32 shutil.copytree(mp3Dir, rawDir, True, ignore = shutil.ignore_patterns('*.mp3')) 33 for file in find_all_files(mp3Dir): 34 if not file.endswith(".mp3"): 35 continue 36 mp3File = file 37 mfccFile = os.path.join(mfccDir, file.replace(".mp3", ".mfc")) 38 rawFile = os.path.join(rawDir, file.replace(".mp3", ".raw")) 39 40 try: 41 mp3ToRaw(mp3File,"temp.raw") 42 extractCenter("temp.raw", rawFile, 15) 43 44 calcMFCC(rawFile,mfccFile) 45 print "%s => %s" % (mp3File, mfccFile) 46 os.remove("temp.raw") 47 48 except: 49 continue

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yohhoy

2016/05/09 10:40

...それで、ご質問は?(自己解決されているようにも見えますが)
monmi_monmi

2016/05/09 22:56

解決方法はわかるのですが実装方法が分からないので、ソースコードのどの部分を修正したらいいか、というのが質問です。
lightson

2016/05/10 03:35

ディレクトリの構造を図示してもらうと答えやすくなると思います。
guest

回答1

0

ベストアンサー

mp3以下にあるディレクトリを下図のようにmfcc以下にコピーしたいということですか?
ディレクトリ構成
それであれば、copytreeのコピー先を次のように指定すればできます。

python

1>>> src = "/Users/lightson/test/mp3" 2>>> dst ="/Users/lihgtson/test/mfcc/mp3" 3>>> shutil.copytree(src,dst)

コードで書けば、これでいいのではないでしょうか。

python

1import os 2shutil.copytree(mp3Dir, os.path.join(mfccDir,'mp3'), True, ignore = shutil.ignore_patterns('*.mp3'))

投稿2016/05/11 12:31

lightson

総合スコア553

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問