0

Pythonでリスト内のアイテムの番号を変更しようとしていますが、何をしても番号順になっているようです。

アイテムと呼ばれるリストに次のアイテムがあるとします

items = ['1. item1', '2. item2', '3. item3', '4. item4']

このように視覚化する方が簡単なので、現在の順序は次のとおりです

1. item1
2. item2
3. item3
4. item4

別の関数から、順序を次のように並べ替えます。

3. item3
1. item1
4. item4
2. item2

今、私が問題を抱えている関数は、ファイルの名前をそれらの位置に対応するように変更するだけなので、次のようになります。

1. item3
2. item1
3. item4
4. item2

問題は、番号が番号順に戻されることです。私のリストアイテムは特定の順序であり、リスト内の位置に従ってアイテムに番号を付けたいです。

def order(self, directory):
    i = 1
    #print self.files
    for filename in os.listdir(directory): 
        if filename in self.files: #if the current file in the directory is part of the files list
            newfile = re.sub(r'^[0-9][.]',"",filename) #remove the number and decimal from the beginning
            os.rename(directory + "/" + filename, directory + "/" + str(i) + ". " + newfile) #rename it with a new number and decimal
            i = i + 1
            #print newfile
4

1 に答える 1

1

代わりに使用してみてくださいi-リスト内のアイテムのインデックス

os.rename(directory + "/" + filename, directory + "/" + str(self.files.index(filename)) + ". " + newfile)

os.listdirファイルの順序がわからないためです。

于 2012-10-25T19:03:56.283 に答える