如何在包含特定文本的文件夹中搜索文件并在Python中重命名该文件

用户名

我试图找到一个文件名,其中包含我使用列表传递的特定文本。我已经能够找到文件,但是似乎无法重命名它们。我不确定自己在做什么错,因此我们将不胜感激。在python上还很新,所以只需尝试学习一些简单的任务即可。

from os import rename, listdir
import fnmatch

i = 0
divisions = ['BAT','FAB','HIN','OFA','SBY','VAL',
             'FRE','JEF','OLA','SPR','WEB','CTV',
             'MOB','PET','SWN','DEN','GRE','MTJ',
             'ROS','SXB','DWT','HAI','OAK','RPB','TUL']

divs = listdir('.')
ending = " Financials.xlsx"

for div in divs:
    if fnmatch.fnmatch(div, divisions[i]):
        rename(div, divisions[i] + ending)
    i += 1
德莱尼

您的代码有两个问题。首先,该fnmatch模式需要一个通配符来匹配文件名。其次,divisions当您需要遍历所有文件直到找到匹配项时,每个文件名仅比较1个值。修复这些问题将为您提供以下内容(我重命名了几个值,因为在文件列表为“ divs”时使用名为“ divisions”的东西有点令人困惑)

from os import rename, listdir
from fnmatch import fnmatch

divisions = ['BAT','FAB','HIN','OFA','SBY','VAL',
             'FRE','JEF','OLA','SPR','WEB','CTV',
             'MOB','PET','SWN','DEN','GRE','MTJ',
             'ROS','SXB','DWT','HAI','OAK','RPB','TUL']

# build (division name, fnmatch pattern) for each division
patterns = [(division, f"{division} Financials*.xlsx") for division in divisions]

filenames = listdir('.')

for filename in filenames:
    for division, pattern in patterns:
        if fnmatch(filename, pattern):
            rename(filename, f"{division} Financials.xlsx")
            break

如果您希望将其限制为2020年,则模式将会改变。实际上,您根本不需要fnmatch,因为您知道确切的文件名。

from os import rename, listdir

divisions = ['BAT','FAB','HIN','OFA','SBY','VAL',
             'FRE','JEF','OLA','SPR','WEB','CTV',
             'MOB','PET','SWN','DEN','GRE','MTJ',
             'ROS','SXB','DWT','HAI','OAK','RPB','TUL']
filename_map = dict(f"{division} Financials 2020.xlsx":f"{division} Finanacials.xlsx" 
    for division in divisions)

filenames = listdir('.')

for filename in filenames:
    mapped = filename_map.get(filename)
    if mapped:
        rename(filename, mapped)

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

批量重命名文件夹名称中的特定文本

需要什么算法来提取 zip 并重命名文件夹并在该文件夹内搜索特定文件?

在Python中重命名文件夹

如何在Java中重命名文件夹

如何在Linux中递归重命名文件夹

如何在OSX中批量重命名文件夹?

如何在终端中重命名文件夹?

重命名文件夹,并与现有文件夹合并(如果Powershell中存在该文件夹)

重命名文件夹中的文件

重命名文件夹中的文件

如何重命名子文件夹或zip文件中的文本文件

如何在python中逐行使用文本文件的新名称重命名文件夹中的文件名

如何在许多子目录中重命名给定的123.txt文件以将文件夹名称添加到该文件

如何重命名文件夹中的文件名?

如何重命名多个文件夹中的多个文件?

如何在子文件夹中搜索特定的文本文件

通过日期python重命名文件夹中的文件

python重命名文件夹中的所有文件

如何在标题包含特定文本的文件夹中挑选文件?

搜索文件中的文本,然后使用该文本重命名文件

如何使用批处理脚本重命名在该文件夹中具有一定数量文件的多个文件夹?

如何以特定格式重命名文件夹中的多个文件?

如何在python中重命名文本文件?

如何在Amazon S3中重命名文件和文件夹?

python:通过子文件夹名称重命名子文件夹中的文件

如何在python中列出包含特定模式文件的文件夹/目录?

如何在不重命名目录的情况下重命名多个文件夹中的文件?

如何根据存储在同名文本文件中的日期/时间重命名文件夹中的每个JPG文件?

重命名文件夹中的所有文件也重命名子文件夹