2017-03-29 1 views
0

numpy 파일 집합이 하나의 폴더에 있습니다.numpy 파일의 이름에서 numpy 목록을 만드는 방법

예 : 파일 이름 :

AES_Trace=300001_key=000102030405060708090a0b0c0d0e0f_Plaintext=f9f19b259648feb20d842480745de16f_Ciphertext=a3140be40735f9f1865aa6b1b32b5667.npy 

내 목록의 각 행이 포함되어야합니다 은 내가 각 file'name에 대한 모든 라인에 몇 가지 세부 사항을 넣을 수 있습니다 어디 NumPy와 목록을 만들 필요가

300001 000102030405060708090a0b0c0d0e0f f9f19b259648feb20d842480745de16f a3140be40735f9f1865aa6b1b32b5667 

나는 숫자와 공백 만 넣어야한다는 뜻입니다.

나는이 방법을 사용하지만 내 파일의 모든 이름을 제공합니다.

import os 
path_For_Numpy_Files = 'C:\\Users\\user\\My_Test_Traces\\1000_Traces_bin' 
path_List_File='C:\\Users\\user\\My_Test_Traces\\NewTest.list_bin' 
os.chdir(path_For_Numpy_Files) 
list_files=os.listdir(os.getcwd()) 
with open(path_List_File, 'w') as fp: 
    fp.write('\n'.join(sorted((list_files),key=os.path.getmtime))) 

안녕하십니까?

+0

'list_files'는 이름의 목록입니다. 해당 목록을 반복하여 각 문자열에서 원하는 값을 파싱하고 새 문자열을 만들어야합니다. 이것은 단지 일반적인 파이썬리스트와 문자열 작업입니다. numpy가 아닌 문제 ('npy' 확장 제외). – hpaulj

답변

0

당신이 시도 할 수 있습니다 :

def reformat_name(old): 
     key0= old.split('_key=')[1].split('_Plaintext=')[0] 
     key1 = old.split('_Plaintext=')[1].split('_Ciphertext=')[0] 
     key2 = old.split('_Ciphertext=')[1].split('.bin')[0] 
     name = old.split('AES_Trace=')[1].split('_key=')[0] 
     #new_filename = '{:07d}'.format(int(name)) + ' ' + key0 + ' ' + key1 + ' '+ key2 + ' ' 
     new_filename = '{:07d}'.format(int(name)) + ' ' + key0 + ' ' + key1 + ' '+ key2 + ' ' 
     return new_filename 

    import os 
    path_For_Numpy_Files='C:\\Users\\user\\My_Test_Traces\\3_Traces_npy' 
    path_List_File='C:\\Users\\user\\My_Test_Traces\\ttttttTest.list_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) 
    with open(path_List_File, 'w') as fp: 
     for file in list_files_Sorted: 
      new_name = reformat_name(file) 
      fp.write(new_name+ '\n') 
+0

감사합니다. 작동합니다! – Guillaume

0

기본 아이디어 인 것 같습니다. 이 스크립트에서

from pathlib import Path 
import re 

p = Path('c:/scratch/sample') 
for fileName in p.iterdir(): 
    print (fileName.name) 
    print (' '.join(re.findall('=([abcdef]{2,})', fileName.name))) 

출력했다 :

AES_Trace=300001_key=000102030405060708090a0b0c0d0e0f_Plaintext=f9f19b259648feb20d842480745de16f_Ciphertext=a3140be40735f9f1865aa6b1b32b5667.npy 
300001 000102030405060708090a0b0c0d0e0f f9f19b259648feb20d842480745de16f a3140be40735f9f1865aa6b1b32b5667 
AES_Trace=300002_key=000102030405060708090a0b0c0d0e0f_Plaintext=f9f19b259648feb20d842480745de16f_Ciphertext=a3140be40735f9f1865aa6b1b32b5667.npy 
300002 000102030405060708090a0b0c0d0e0f f9f19b259648feb20d842480745de16f a3140be40735f9f1865aa6b1b32b5667 
AES_Trace=300003_key=000102030405060708090a0b0c0d0e0f_Plaintext=f9f19b259648feb20d842480745de16f_Ciphertext=a3140be40735f9f1865aa6b1b32b5667.npy 
300003 000102030405060708090a0b0c0d0e0f f9f19b259648feb20d842480745de16f a3140be40735f9f1865aa6b1b32b5667 
관련 문제