python - 我们如何遍历文件夹中的所有文件名并仅更改其中一些名称?
问题描述
我有看起来像这样的文件。
FFIEC CDR Call Schedule RCCI 03312001.txt
FFIEC CDR Call Schedule RCCI 03312002.txt
FFIEC CDR Call Schedule RCCI 03312003.txt
etc.
FFIEC CDR Call Schedule RCCII 03312001.txt
FFIEC CDR Call Schedule RCCII 03312002.txt
FFIEC CDR Call Schedule RCCII 03312003.txt
(2 之 2)
我想结束这个。
FFIEC CDR Call Schedule RCC1 03312001.txt
FFIEC CDR Call Schedule RCC1 03312002.txt
FFIEC CDR Call Schedule RCC1 03312003.txt
etc.
FFIEC CDR Call Schedule RCC2 03312001.txt
FFIEC CDR Call Schedule RCC2 03312002.txt
FFIEC CDR Call Schedule RCC2 03312003.txt
这是我正在测试的代码。
# rename certain filenames
import os
import glob
path = 'C:\\Users\\ryans\\Downloads\\'
all_files = glob.glob(os.path.join(path, "*.txt"))
# first list
before = [
'FFIEC CDR Call Schedule RCCI',
'FFIEC CDR Call Schedule RCCII',
'FFIEC CDR Call Schedule RCEI',
'FFIEC CDR Call Schedule RCEII'
]
# second list
after = [
'FFIEC CDR Call Schedule RCC1',
'FFIEC CDR Call Schedule RCC2',
'FFIEC CDR Call Schedule RCE1',
'FFIEC CDR Call Schedule RCE2'
]
for f in all_files:
for x in before:
if x in f:
print(x)
print(f)
os.rename(x, path + after)
解决方案
您可以使用zip
. 这是在假设您的after
列表具有与before
. 如果这个假设是不可能的,那么你就不能使用zip
.
import os
path = 'C:\\Users\\ryans\\Downloads\\'
# first list
before = [
'FFIEC CDR Call Schedule RCCI',
'FFIEC CDR Call Schedule RCCII',
'FFIEC CDR Call Schedule RCEI',
'FFIEC CDR Call Schedule RCEII'
]
# second list
after = [
'FFIEC CDR Call Schedule RCC1',
'FFIEC CDR Call Schedule RCC2',
'FFIEC CDR Call Schedule RCE1',
'FFIEC CDR Call Schedule RCE2'
]
for before_name, after_name in zip(before, after):
os.rename(path + before_name, path + after_name)
推荐阅读
- accessibility - 对于在表格单元格(按钮、链接)中具有表单输入的可访问 HTML 表格,选项卡和箭头键行为的最佳实践?
- java - 使用 gcore 生成的 java corefile 有用吗?
- emacs - 如何使用领导密钥作为包前缀的一部分
- linux - 使用 Ansible 查找具有特定日期的文件以进行复制
- c# - 异步等待导致 UI 被阻止
- python - Python迭代多个元素
- html - 在使用背景尺寸时保持给定图像边缘的可见性:覆盖;
- unity3d - Unity 中的 Blender 对象上的材质无法正确显示
- powershell - Powershell WMI Win32_LogicalDisk - 在 FreeSpace 上进行过滤
- spring-boot - 对等 io.netty.channel.unix.Errors$NativeIoException 重置连接