2017-03-22 14 views
1

私はnumbpyファイルのリストを持って、私は自分の名前を変更する必要があり、実際には、のは、私がこのファイルのリストを持っていると仮定しましょう:numpyファイルのリストの名前を変更する方法は?

AES_Trace=1_key=hexaNumber_Plaintext=hexaNumber_Ciphertext=hexaNumber.npy 
AES_Trace=2_key=hexaNumber_Plaintext=hexaNumber_Ciphertext=hexaNumber.npy 
AES_Trace=3_key=hexaNumber_Plaintext=hexaNumber_Ciphertext=hexaNumber.npy 

私は変更する必要がどのようなことは、結果として、ファイルの数です私が持っている必要があります。

AES_Trace=100001_key=hexaNumber_Plaintext=hexaNumber_Ciphertext=hexaNumber.npy 
AES_Trace=100002_key=hexaNumber_Plaintext=hexaNumber_Ciphertext=hexaNumber.npy 
AES_Trace=100003_key=hexaNumber_Plaintext=hexaNumber_Ciphertext=hexaNumber.npy 

私が試してみました:

import os 
import numpy as np 
import struct 
path_For_Numpy_Files='C:\\Users\\user\\My_Test_Traces\\1000_Traces_npy' 
os.chdir(path_For_Numpy_Files) 
list_files_Without_Sort=os.listdir(os.getcwd()) 
list_files_Sorted=sorted((list_files_Without_Sort),key=os.path.getmtime) 
for file in list_files_Sorted: 
    print (file) 
    os.rename(file,file[11]+100000) 

が、私はそれが良い解決策ではないと思い、まずそれが動作しない、それは私にこのエラーを与える:

os.rename(file,file[11]+100000) 
IndexError: string index out of range 

答えて

0

を使用することができます。これを試してください:

import os 

path = 'C:\\Users\\user\\My_Test_Traces\\1000_Traces_npy' 
file_names = os.listdir(path) 

for file in file_names: 

    start = file[0:file.index("Trace=")+6] 
    end = file[file.index("_key"):] 
    num = file[len(start): file.index(end)] 

    new_name = start + str(100000+int(num)) + end 

    os.rename(os.path.join(path, file), os.path.join(path, new_name)) 

これは数字が9より大きい場合に有効です。これは、もう1つの答えが余分なゼロを付けることになります。

+0

ありがとうございます。しかし、それは私にこのエラーを与える:start = file [0:file.index( "=")+ 1] ValueError:部分文字列が見つかりません –

+0

@ user6652926 - 私はより完全に私の答えを更新しました。それが動作するかどうか私に教えてください。 – Aidenhjj

+0

私は申し訳ありませんが、私の間違いでした、ファイルの間違ったフォーマットを入れました、hexnumber = f9f19b259648feb20d842480745de16fたとえば –

1

あなたfile変数はstrあるので、あなたはそれにint10000などを追加することはできません。だから、

>>> file = 'Tracenumber=01_Pltx5=23.npy' 
>>> '{}=1000{}'.format(file.split('=')[0],file.split('=')[1:]) 
'Tracenumber=100001_Pltx5=23.npy' 

、あなたではなく、私はあなたが1行で、またはregexでこれを行うことができますことを確信しているが、私は透明性がより価値があると思い

os.rename(file,'{}=1000{}'.format(file.split('=')[0],file.split('=')[1:])) 
+0

ありがとう、それは私に同じエラーos.rename与え はIndexError(ファイルを、 '{} = 1000 {}' 形式(* file.split( '='))。):範囲 –

+0

のうちタプルインデックス次に、期待どおりの形式でないファイル名があります。ファイル名を印刷して、誤っているファイル名を確認してください。 –

+0

申し訳ありませんが私の間違いでした、私はファイルの間違った形式を入れ、hexnumber = f9f19b259648feb20d842480745de16f例えば –

関連する問題