我们如何循环遍历文件夹中的所有文件名,并仅更改其中的一些名称?

2024-09-24 02:19:45 发布

您现在位置: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)

Tags: pathintxtosetccallglobschedule
2条回答

您可以使用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)
import os
import glob
##create int number from roman##
def roman_to_int( s):
    rom_val = {'I': 1, 'V': 5, 'X': 10, 'L': 50, 'C': 100, 
    'D': 500, 'M': 1000}
    int_val = 0
    for i in range(len(s)):
        if i > 0 and rom_val[s[i]] > rom_val[s[i - 1]]:
            int_val += rom_val[s[i]] - 2 * rom_val[s[i - 1]]
        else:
            int_val += rom_val[s[i]]
    return int_val
#set the path and get the files
path = '/home/jana/Workshop/convert roman/files/'
all_files = os.listdir(path)
files_name = []
for item in all_files:
    nam = item.split() 
    int_val = roman_to_int(nam[4][3:])
    nam[4] = nam[4][:3]+str(int_val)
    files_name.append(" ".join(nam))
    print(files_name)
##rename the file
for (before , after) in zip(all_files, files_name):
    path_name = path+before
    path_name_2 = path+after
    os.rename(path_name,path_name_2)
#this will work

相关问题 更多 >