2

Pythonを使用してファイルの名前を変更しようとしていますが、エラーがどこにあるかを正確に把握できません。おそらく、30時間以上ノンストップでこれを実行しようとして疲れすぎているのでしょう。

実際の問題は、目的の出力実際の出力を見るとよくわかります。

#!/usr/bin/env python
import sys
import os
import glob
if __name__ == '__main__':
    input_file=sys.argv[1]
    File= open(input_file)
    while True:
       line=File.readline()
       words = line.split()
       if not ("call" or "song") in words:
         break 
       folder_dest= words[0] +" "+ words[1]
       subfolder=words[3]
       filename=words[4].replace(".wav","")
       folder_now=words[7].replace(".wav","")
       os.chdir(folder_now)
       i=1
       for files in glob.glob("*.wav"): 
           os.renames(files,"../"+folder_dest+"/"+subfolder+"/"+filename+"-"+'{:03}'.format(i)+".wav")
           i+=1
       os.chdir("..")

詳細説明:

この入力ファイルがあります

Aegolius harrisii song 10009.wav Aegolius harrisii song 21.wav
Aegolius harrisii song 483_Aegolius%20harrisii_F27_Itatira_28_IV_2004_Weber%20Girao.wav Aegolius harrisii song 22.wav
Gnorimopsar chopi song 1000517.wav Gnorimopsar chopi song 825.wav
Myiobius barbatus call Myiobius.sulphureipygius9402-1.wav Myiobius barbatus call 1146.wav
Myiobius barbatus song 1001.wav Myiobius barbatus song 1147.wav
Muscipipra vetula call 1000682.wav Muscipipra vetula call 1122.wav

これは現在のフォルダー構造です。

1
├── parte_1.wav
└── parte_2.wav

2
├── parte_1.wav
├── parte_2.wav
├── parte_3.wav
├── parte_4.wav
├── parte_5.wav
└── parte_6.wav

...

現在の出力は次のとおりです。

Aegolius harrisii/
    ├── 100015.wav
    │   ├── Aegolius-001.wav
    │   └── Aegolius-002.wav
    └──  AEGOLI~1.wav
        ├── Aegolius-001.wav
        ├── Aegolius-002.wav
        ├── Aegolius-003.wav
        ├── Aegolius-004.wav
        ├── Aegolius-005.wav
        └── Aegolius-006.wav

希望の出力

Aegolius harrisii/
├── call
│   ├── 100015-001.wav
│   └── 100015-002.wav
└── song
    ├──  AEGOLI~1-001.wav
    ├──  AEGOLI~1-002.wav
    ├──  AEGOLI~1-003.wav
    ├──  AEGOLI~1-004.wav
    ├──  AEGOLI~1-005.wav
    └──  AEGOLI~1-006.wav

問題は、os.renames で何が間違っているのかということです。

これを読んで/答えてくれてありがとう!

4

1 に答える 1