Python получить правильный путь для файла

Я хочу выписать путь к zip-файлам, которые находятся в папке "zips". Вот мой код:

import os, zipfile

directory = 'zips'

for filename in os.listdir(directory):
    if filename.endswith(".zip"):
        file_name = os.path.abspath(filename)  # get full path of files
        print(file_name)
        continue
    else:
        print("NO")

Теперь он дает неверный ответ: /home/huhu/PycharmProjects/monitoring/aa.zip /home/huhu/PycharmProjects/monitoring/bb.zip

И это должно быть /home/huhu/PycharmProjects/monitoring/zips/aa.zip /home/huhu/PycharmProjects/monitoring/zips/bb.zip В чем ошибка?

1 ответ

Потому что результат os.listdir(directory) список имен (без пути) файлов в этом каталоге (['aa.zip','bb.zip']). Когда вы даете им os.path.abspath(filename)они считаются в вашем текущем каталоге, так как zips каталог нигде не упоминается. Вы можете использовать вместо:

import glob
for file in glob.glob('zips/*')

или даже, чтобы избежать фильтрации:

for file in glob.glob('zips/*.zip')
Другие вопросы по тегам