python - 如何在 python 上读取具有相似名称的文件,重命名它们,然后使用它们?

标签 python

我已经在这里发布了同样的问题,但遗憾的是我无法找到解决方案(尽管你们中的一些人给了我很棒的答案,但其中大多数都不是我想要的),所以我会再试一次,这次提供更多关于我正在尝试做的事情的信息。

因此,我正在使用一个名为 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/

相关文章:

Python - 替换每第n次出现的字符串

python - 如何使用 Django 从 .py 文件中读取媒体文件?

python - 在 python 中解压 csv 文件

python - 如何根据 pyodbc 查询的结果创建 NumPy 数组?

python - 如何在 cython 中访问枚举?

python - 将 Python 扩展 (.pyd) 动态链接到另一个扩展

python - 如何获取 SQLALchemy 查询中实体的类型

python - 如何根据其他字段提取csv文件某一字段的值?

python - MacOS Big Sur - Python ctypes find_library 找不到库(ssl、CoreFoundation 等)

python - Numpy bool 逻辑(检查元素是否不是什么)