在 python 中复制文件名中包含特定字符串的文件

Copy a file with a certain string in the filename in python

我需要复制一个包含一些字符串的文件,在文件名中将其命名为 mystring,从一个目录到另一个目录。目前我使用

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

你知道我该如何改进吗?

我刚刚用你的示例文件名尝试了它,并通过 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 中有一个虚拟文件。