Удаление скобок в именах файлов с использованием Python в разных расширениях файлов - PullRequest
0 голосов
/ 29 мая 2020

У меня есть несколько текстовых файлов, pdf и c файлов с скобками, и я использую sh, чтобы удалить их в именах файлов.

Например. [Alpha] .txt -> Alpha.txt

Приведенный ниже код работает, но работает только с определенным расширением файла. Есть ли способ включить файлы .pdf и .do c в один и тот же код?

import os, fnmatch

#Set directory of locataion; include double slash for each subfolder.
file_path = "C:\\Users\\Mr.Slowbro\\Desktop\\Source Files\\"

#Set file extension accordingly
files_to_rename = fnmatch.filter(os.listdir(file_path), '*.txt')

for file_name in files_to_rename:
    file_name_new = file_name.replace('[', '')    
    os.rename(file_path + file_name, file_path + file_name_new)
    os.rename(file_path + file_name_new, file_path + file_name_new.replace(']', ''))

Ответы [ 3 ]

0 голосов
/ 29 мая 2020

Используйте . вместо * .txt

files_to_rename = fnmatch.filter(os.listdir(file_path), '*.*')
0 голосов
/ 29 мая 2020

Это очень просто для всех файлов. Просто замените '*.txt на *.*. *.* означает любое имя файла с любым расширением:

import os, fnmatch

#Set directory of locataion; include double slash for each subfolder.
file_path = "C:\\Users\\Mr.Slowbro\\Desktop\\Source Files\\"

#Set file extension accordingly
files_to_rename = fnmatch.filter(os.listdir(file_path), '*.*') #All files included

for file_name in files_to_rename:
    file_name_new = file_name.replace('[', '')    
    os.rename(file_path + file_name, file_path + file_name_new)
    os.rename(file_path + file_name_new, file_path + file_name_new.replace(']', ''))

Для определенных расширений c просто объедините списки:

import os, fnmatch

#Set directory of locataion; include double slash for each subfolder.
file_path = "C:\\Users\\Mr.Slowbro\\Desktop\\Source Files\\"

#Set file extension accordingly
files_to_rename = fnmatch.filter(os.listdir(file_path), '*.txt') + fnmatch.filter(os.listdir(file_path), '*.pdf') + fnmatch.filter(os.listdir(file_path), '*.doc')
0 голосов
/ 29 мая 2020

Если вы не хотите применять это для определенного расширения файла, вы можете просто удалить условие:

files_to_rename = fnmatch.filter(os.listdir(file_path), '*.txt')

Ваш код будет таким:

import os, fnmatch

#Set directory of locataion; include double slash for each subfolder.
file_path = "C:\\Users\\Mr.Slowbro\\Desktop\\Source Files\\"

for file_name in os.listdir(file_path):
    file_name_new = file_name.replace('[', '').replace(']', '')   
    os.rename(file_path + file_name, file_path + file_name_new)

Кроме того, вы можете объединить обе команды replace в одну строку, как я написал выше.

...