2015-12-13 5 views
1

Мне нужно скопировать файл, содержащий некоторую строку, назовите его mystring в имени файла из каталога в другой. На данный момент я используюСкопируйте файл с определенной строкой в ​​имени файла в python

for file in glob.glob(FileNameM): 
     shutil.copy(file, dest); 

где dest является каталог назначения и

FileNameM = source_directory + some_known_string + mystring + "*" 

Этот код работает прекрасно, когда есть расширение только после mystring, но если есть что-то еще плюс расширение код выходит из строя.

Пример FileNameM, который работает:

/home/eugene/GDrive/Project-related/Skyrmion_Lattice_Output/Output_Good_Enough/Parameters__triangular_N_225_kappa_1.0_beta_0.11_a_3.63311050137* 

и приводит к файлу

/home/eugene/GDrive/Project-related/Skyrmion_Lattice_Output/Output_Good_Enough/Parameters__triangular_N_225_kappa_1.0_beta_0.11_a_3.63311050137.dat 

Пример FileNameM, что не работает:

/home/eugene/GDrive/Project-related/Skyrmion_Lattice_Output/Output/Parameters__triangular_N_225_kappa_1.0_beta_0.12_a_3.6341634222* 

и это должно привести к файлу

/home/eugene/GDrive/Project-related/Skyrmion_Lattice_Output/Output/Parameters__triangular_N_225_kappa_1.0_beta_0.12_a_3.63416342223.dat 

У вас есть идеи, как я могу улучшить?

+0

Не могли бы вы показать пример пути, который работает, и пути, который не поможет воспроизвести вашу проблему? –

+0

Добавлены примеры основного корпуса –

ответ

2

Я просто попытался это с вашими например имена файлов и получили имена обоих файлов по glob.glob(), даже с большим количеством символов отсутствует:

import glob 
    FileNameM = 'test\Parameters__triangular_N_225_kappa_1.0_beta_0.12_a_3.6341634*' 
    for file in glob.glob(FileNameM): 
     print(file) 
# test\Parameters__triangular_N_225_kappa_1.0_beta_0.12_a_3.63416342223.dat 

Запуск на Windows; фиктивный файл находился в подпапке test рядом со сценарием.

Смежные вопросы