gpt4 book ai didi

Python更改文件名的一部分

转载 作者:太空宇宙 更新时间:2023-11-03 15:58:27 24 4
gpt4 key购买 nike

您好,我有许多不同的文件需要重命名为其他名称。我已经走到这一步了,但我想拥有它,这样我就可以替换许多项目及其相应的替换项,而不是逐一键入,运行代码然后再次重新键入。此外,我需要重命名以仅更改文件的一部分而不是整个文件,因此如果有“Cat5e_1mBend1bottom50m2mBend2top-Aqeoiu31”,它只会将其更改为“'Cat5e50m1mBED_50m2mBE2U-Aqeoiu31”运行 python 2.5

import os, glob

name_map = {
"Cat5e_1mBend1bottom50m2mBend2top": 'Cat5e50m1mBED_50m2mBE2U'
}

#searches for roots, directory and files
for root,dirs,files in os.walk(r"H:\My Documents\CrossTalk"):
for f in files:
if f in name_map:
try:
os.rename(os.path.join(root, f), os.path.join(root, name_map[f]))
except FileNotFoundError, e:
#except FileNotFoundError as e: # python 3
print(str(e))

最佳答案

正如 Hector 所指出的,完成此任务的最简单方法是使用正则表达式。幸运的是,Python 有一个出色的正则表达式模块,称为 re。本质上,我们正在查看我们在 name_map 中指定的任何模式是否与我们正在查看的当前文件匹配。如果模式确实匹配,只有匹配的部分被替换掉,然后重命名。

import os, glob, re

name_map = {
"bad": "good",
"cat": "dog"
}

for root, dirs, files in os.walk(r"/Users/.../start/"):
for f in files:
for name in name_map.keys():
if re.search(name,f) != None:
new_name = re.sub(name,name_map[name],f)
try:
os.rename(os.path.join(root,f), os.path.join(root, new_name))
except OSError:
print "No such file or directory!"

因此给定一些目录 start 的内容: 错误名称.txt 猫狗猫.csv

这个 will 脚本会将它们重命名为: good_name.txt dogdogdog.csv

本文的两个主要收获应该是如何使用 re.search()re.sub() 方法。 re.search(pattern, string) 在提供的字符串中查找模式。如果找到它,它将返回一个 Match 对象,如果没有找到,它将返回 None。这使得测试字符串中的模式变得轻而易举。一旦我们发现该模式存在,下一步就是用我们的新名称替换它。输入 re.sub() 方法。 re.sub(pattern, replace, string) 在提供的字符串中搜索模式,然后用 replace 的内容替换该模式。

我强烈建议您查看 the docs for the re module因为它非常强大,可以用来解决很多问题。

关于Python更改文件名的一部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41862709/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com