我已经在这里发布了同样的问题,但遗憾的是我无法找到解决方案(尽管你们中的一些人给了我很棒的答案,但其中大多数都不是我想要的),所以我会再试一次,这次提供更多关于我正在尝试做的事情的信息。
因此,我正在使用一个名为 GMAT 的程序来获取一些输出(带有数值的 .txt 文件)。这些输出有不同的名称,但因为我将它们用于不止一件事,所以我得到如下内容:
GMATd_1.txt
GMATd_2.txt
GMATf_1.txt
GMATf_2.txt
现在,我需要做的就是使用这些输出作为我的代码中的输入。我需要在脚本的其他函数中使用它们,因为我将有很多这些 .txt 文件,所以我想重命名它们,因为我不想像“./path/etc”那样使用它们。
所以我想要的是编写一个循环来获取这些文件并在脚本内重命名它们,以便我可以在其他函数(循环外)中使用具有新名称的这些文件。
因此,不必单独执行此操作:
GMATds1= './path/GMATd_1.txt'
GMATds2= './path/GMATd_2.txt'
我想编写一个循环来为我做到这一点。
我已经尝试过使用字典:
import os
import fnmatch
dict = {}
for filename in os.listdir('.'):
if fnmatch.fnmatch(filename, 'thing*.txt'):
examples[filename[:6]] = filename
这确实有效,但我无法在循环之外使用字典键。
最佳答案
如果我理解正确,您会尝试获取具有相似名称的文件(至少是重复出现的模式)并重命名它们。这可以通过以下代码来完成:
import glob
import os
all_files = glob.glob('path/to/directory/with/files/GMAT*.txt')
for file in files:
new_path = create_new_path(file) # possibly split the file name, change directory and/or filename
os.rename(file, new_path)
glob
library允许使用 *
通配符搜索文件,从而可以搜索具有特定模式的文件。它列出了某个目录(或多个目录,如果您包含 *
通配符作为目录)中的所有文件。当您迭代文件时,您可以直接使用文件的输入(正如您显然打算做的那样)或重命名它们,如此代码片段所示。要重命名它们,您需要生成一个新路径 - 因此您必须编写 create_new_path
函数来获取旧路径并创建一个新路径。
关于python - 如何在 python 上读取具有相似名称的文件,重命名它们,然后使用它们?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57094329/