отдельное имя файла после подчеркивания _ os.path - PullRequest
0 голосов
/ 18 января 2019

На моем пути /volume1/xx/ есть несколько файлов с этим символом A_test1.pdf, B_test2.pdf, ... Я хочу отделить часть test1 без пути и .pdf.

Я новичок, поэтому я попробовал сначала с полным именем но я получил только "* .pdf" как текст. Что не так с путем или местозаполнителем *?

splitname = os.path.basename('/volume1/xx/*.pdf')

Редактировать

Я получил 2019-01-18_RG-Telekom [] от orign ReT_march - я хочу 2019-01-18_RG-Telekom_march (текст после подчеркивания) xx - это папка вот весь код:

#!/usr/bin/env python3
import datetime
import glob
import os
import os.path

SOURCE_PATH = '/volume1/xx'
TARGET_PATH = os.path.join(SOURCE_PATH, 'DMS')

def main():

    today = datetime.date.today()

    splitnames = [os.path.basename(fpath) for fpath in glob.glob("./xx/*.pdf")]

    for prefix, name_part in [
        ('ReA', 'RG-Amazon'),
        ('GsA', 'GS-Amazon'),
        ('ReT', 'RG-Telekom'),
        ('NoE', 'Notiz-EDV'),
    ]:
        filenames = glob.iglob(os.path.join(SOURCE_PATH, prefix + '*.pdf'))
        for old_filename in filenames:
            new_filename = os.path.join(TARGET_PATH, '{}_{}_{}.pdf'.format(today, name_part, splitnames))
            os.rename(old_filename, new_filename)

if __name__ == '__main__':
    main()

1 Ответ

0 голосов
/ 18 января 2019

Использовать glob , os.path Не знаю, как обрабатывать маски, но glob.glob работает:

splitnames = [os.path.basename(fpath) for fpath in glob.glob("./**/*.txt")]
splitnames 
Out:
['A_test1.pdf', 'B_test2.pdf']

Вывод глобуса:

glob.glob("./**/*.txt")
Out:
['./some_folder/A_test1.pdf', './another_folder/B_test2.pdf']

Примените os.path.basename к этому списку и извлеките базовые имена, как показано выше.

Редактировать
Если xx в пути volume1/xx/ - это просто имя папки, а не маска, вы должны использовать следующее выражение:

splitnames = [os.path.basename(fpath) for fpath in glob.glob("./xx/*.txt")]

потому что ./**/ - это выражение, которое маскирует имя папки, и в этом случае нет необходимости.

...