Я ищу сценарий Python, который найдет точное имя файла существующего файла в текущем каталоге, из которого будет запускаться этот сценарий Python, который может быть назван постепенно.

Например, файл может быть: {{Х0}} { { Х1 }} { { Х2 }} ....

Итак, мы знаем, что имя файла начинается с префикса file, и мы знаем, что оно заканчивается суффиксом .dat.

Но мы не знаем, будет ли это file1.dat и file1000.dat или что-то среднее.

Поэтому мне нужен скрипт, который будет проверять диапазон, скажем, 1-1000 всех имен файлов от file1.dat до file1000.dat, и если он найдет то, которое существует в каталоге, он вернет успех сообщение.

-1
Gabrielf1 29 Авг 2017 в 21:37

4 ответа

Лучший ответ

Попробуй это:

for i in range(1, 1001):
    if os.path.isfile("file{0}.dat".format(i)):
        print("Success!")
        break
else:
    print("Failure!")
1
Karan Elangovan 29 Авг 2017 в 18:42

Как другие предложили в комментариях, glob и другие варианты доступны, однако, лично я нахожу listdir более удобным.

import os
for file in os.listdir("/DIRECTORY"):
    if file.endswith(".dat") and prefix in file:
        print file
0
user5722540 29 Авг 2017 в 18:51

Попробуйте что-то вроде этого:

import os

path = os.path.dirname(os.path.realpath(__file__))

for f_name in os.listdir(path):
    if f_name.startswith('file') and f_name.endswith('.dat'):
        print('found a match')
2
LeopoldVonBuschLight 29 Авг 2017 в 18:42

Я хотел бы выполнить поиск с помощью регулярного выражения, используя glob модуль Python. Вот пример выражения:

glob.glob(r'^file(\d+)\.dat$')

Это будет соответствовать имени файла, начинающемуся с file, за которым следуют любые цифры и заканчивающемуся .dat. Более подробное объяснение того, как работает это регулярное выражение, можно найти на Regex101, где вы можете проверить это тоже.

Примечание. Ваш вопрос не указан, но в качестве бонуса glob также поддерживает рекурсивный поиск.

2
Zach Gates 29 Авг 2017 в 18:51