我有一些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
答案 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,其他答案将额外的零加上。