首页 > 解决方案 > 我们如何遍历文件夹中的所有文件名并仅更改其中一些名称?

问题描述

我有看起来像这样的文件。

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)

标签: pythonpython-3.x

解决方案


您可以使用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)

推荐阅读