如何更改numpy文件列表的名称?

时间:2017-03-22 10:22:53

标签: python numpy

我有一些numbpy文件列表,我需要更改它们的名称,实际上,让我们假设我有这个文件列表:

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

2 个答案:

答案 0 :(得分:1)

您的file变量是str,因此您无法为int添加10000

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

所以,你可以使用

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

答案 1 :(得分:0)

我确信您可以在一行中使用try { pleaseWait.Show(); Application.DoEvents(); int RowC = await FillAndGetRowCount( ... ); pleaseWait.Close(); if (RowC == 0) { MessageBox.Show(GlobVar.NoResults, "", MessageBoxButtons.OK, MessageBoxIcon.Hand); } } ,但我认为清晰度更有价值。试试这个:

regex

这将使用数字> 9,其他答案将额外的零加上。