1

ディレクトリにいくつかのファイルがありますが、

file_IL.txt
file_IL.csv
file_NY.txt
file_NY.csv

シーケンス番号を取得できるように名前を変更する必要があります。例えば、

file_IL.txt_001
file_IL.csv_001
file_NY.txt_002
file_NY.csv_002

私は次のPythonコードを書きました

def __init__(self):  

    self.indir = "C:\Files"  



def __call__(self):  

    found = glob.glob(self.indir + '/file*')  

    length = len(glob.glob(self.indir + '/file*'))  
    print length  
    count = 000  

    for num in (glob.glob(self.indir + '/file*')):  
        count = count + 1  
        count = str(count)  
        print count  
        shutil.copy(num, num+'_'+count)  
        print num  
        count = int(count)  

しかし、これは私に以下のような結果を与えています、

file_IL.txt_001
file_IL.csv_002
file_NY.txt_003
file_NY.csv_004

私の要件に合わせて上記の Python スクリプトを変更するのを手伝ってくれる人はいますか? 私はPythonが初めてで、どのように実装できるかわかりません。

4

1 に答える 1

3

最善の方法は、拡張機能とその拡張機能のカウントをディクショナリに格納することです。

def __call__(self):  

    found = glob.glob(self.indir + '/file*')  
    length = len(found)  
    counts = {}

    for num in found:
        ext = num.rsplit(".",1)[-1]    # Right split to get the extension
        count = counts.get(ext,0) + 1  # get the count, or the default of 0 and add 1
        shutil.copy(num, num+'_'+'%03d' % count)   # Fill to 3 zeros
        counts[ext] = count            # Store the new count
于 2013-10-27T22:50:40.870 に答える