繁体   English   中英

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

[英]How can we loop through all file names in a folder and chagce only some of the names?

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

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)
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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM