Есть ли способ найти * .csv существует в Python? - PullRequest
0 голосов
/ 16 мая 2018

Что требуется?

Проверить, генерируется ли какой-либо из файлов * .csv в текущем каталоге.Обратите внимание, что файл csv назван в честь даты / времени, поэтому в этом случае невозможно получить имя файла.

Проблема

Пробовал файл os.path.isfile([correct_path_to_file]) и все работает.Однако, что нам нужно найти, так это если любой из .csv-файлов сгенерирован, если это так, assertTrue или assertFalse.В случае assertTrue, удалит файл.Возможно ли это с python?

Ссылка

Наиболее близким из этого является использование регулярного выражения, например this post, однако для этой простой проверки этодействительно требуется перейти на регулярное выражение?

Ответы [ 2 ]

0 голосов
/ 16 мая 2018

Вы можете использовать os.listdir для получения всех имен файлов и os.path.splitext для получения расширения файла

any(os.path.splitext(f)[1] == '.csv' for f in os.listdir(path))

Для текущего пути path=os.getcwd(), path='.' оба сделают (или даже пропустят)параметр).Чтобы удалить все * .csv файлы, просто выполните цикл

for f in os.listdir('.'):
    if os.path.splitext(f)[1] == '.csv':
        os.remove(f)
0 голосов
/ 16 мая 2018

Используйте модуль glob , чтобы вывести список файлов в каталоге, соответствующем шаблону:

import glob
import os.path

csv_files = glob.glob(os.path.join(directory_name, '*.csv'))

Если csv_files - это непустой список, есть соответствующие файлы.

Под капотом модуль glob преобразует шаблон глобуса в регулярное выражение для вас (через fnmatch.translate(), запускает os.listdir() в указанном каталоге и возвращает только теимена, соответствующие шаблону, в виде полных путей:

>>> import os.path, glob, tempfile
>>> with tempfile.TemporaryDirectory() as directory_name:
...     pattern = os.path.join(directory_name, '*.csv')
...     # nothing in the directory, empty glob
...     print('CSV file count:', len(glob.glob(pattern)))
...     # create some files
...     for n in ('foo.csv', 'bar.txt', 'ham.csv', 'spam.png'):
...         __ = open(os.path.join(directory_name, n), 'w')  # touches file, creating it
...     csv_files = glob.glob(pattern)
...     print('CSV file count after creation:', len(csv_files))
...     for filename in csv_files:
...         print(filename)
...
CSV file count: 0
CSV file count after creation: 2
/var/folders/vh/80414gbd6p1cs28cfjtql3l80000gn/T/tmp2vttt0qf/foo.csv
/var/folders/vh/80414gbd6p1cs28cfjtql3l80000gn/T/tmp2vttt0qf/ham.csv
...