특정 텍스트가 포함 된 폴더에서 파일을 검색하고 Python에서 해당 파일의 이름을 바꾸는 방법

사용자 11693583

목록을 사용하여 전달하는 특정 텍스트가 포함 된 파일 이름을 찾으려고합니다. 파일을 찾을 수 있었지만 이름을 바꿀 수 없습니다. 내가 뭘 잘못하고 있는지 잘 모르겠으므로 어떤 도움을 주시면 대단히 감사하겠습니다. 파이썬에서는 꽤 새롭기 때문에 몇 가지 간단한 작업으로 배우려고 노력합니다.

from os import rename, listdir
import fnmatch

i = 0
divisions = ['BAT','FAB','HIN','OFA','SBY','VAL',
             'FRE','JEF','OLA','SPR','WEB','CTV',
             'MOB','PET','SWN','DEN','GRE','MTJ',
             'ROS','SXB','DWT','HAI','OAK','RPB','TUL']

divs = listdir('.')
ending = " Financials.xlsx"

for div in divs:
    if fnmatch.fnmatch(div, divisions[i]):
        rename(div, divisions[i] + ending)
    i += 1
Tdelaney

코드에 두 가지 문제가 있습니다. 먼저 fnmatch패턴에 파일 이름과 일치하는 와일드 카드가 필요합니다. 둘째, divisions일치하는 항목을 찾을 때까지 모든 항목을 회전해야 할 때 파일 이름 당 하나의 값만 비교 합니다. 그것들을 수정하면 다음과 같은 결과를 얻을 수 있습니다 (파일 목록이 "divs"인 동안 "divisions"라는 것이 약간 혼란 스러웠 기 때문에 몇 가지 값의 이름을 변경했습니다)

from os import rename, listdir
from fnmatch import fnmatch

divisions = ['BAT','FAB','HIN','OFA','SBY','VAL',
             'FRE','JEF','OLA','SPR','WEB','CTV',
             'MOB','PET','SWN','DEN','GRE','MTJ',
             'ROS','SXB','DWT','HAI','OAK','RPB','TUL']

# build (division name, fnmatch pattern) for each division
patterns = [(division, f"{division} Financials*.xlsx") for division in divisions]

filenames = listdir('.')

for filename in filenames:
    for division, pattern in patterns:
        if fnmatch(filename, pattern):
            rename(filename, f"{division} Financials.xlsx")
            break

구체적으로 2020 년으로 제한하려면 패턴이 변경됩니다. 사실 정확한 파일 이름을 알고 있기 때문에 fnmatch가 전혀 필요하지 않습니다.

from os import rename, listdir

divisions = ['BAT','FAB','HIN','OFA','SBY','VAL',
             'FRE','JEF','OLA','SPR','WEB','CTV',
             'MOB','PET','SWN','DEN','GRE','MTJ',
             'ROS','SXB','DWT','HAI','OAK','RPB','TUL']
filename_map = dict(f"{division} Financials 2020.xlsx":f"{division} Finanacials.xlsx" 
    for division in divisions)

filenames = listdir('.')

for filename in filenames:
    mapped = filename_map.get(filename)
    if mapped:
        rename(filename, mapped)

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관