Как я могу прочитать определенные c файлы в папке (файлы в пределах диапазона) в Python - PullRequest
0 голосов
/ 10 июля 2020

Например, у меня в папке около 43000 файлов txt, однако я хочу читать не все файлы, а только некоторые из них, задав диапазон, например от 1.txt до 14400.txt`. Как я могу добиться этого в Python? Сейчас я читаю все файлы в каталоге, например

for each in glob.glob("data/*.txt"):
    with open(each , 'r') as file:
        content = file.readlines()
        with open('{}.csv'.format(each[0:-4]) , 'w') as file:
            file.writelines(content)

Каким образом я могу достичь желаемых результатов?

Ответы [ 3 ]

0 голосов
/ 10 июля 2020

Поскольку glob.glob() возвращает iterable, вы можете просто перебирать определенный раздел списка, используя что-то вроде:

import glob

for each in glob.glob("*")[:5]:
    print(each)

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

Редактировать: Также убедитесь, что вы не пытаетесь iterate через list slice, который находится вне пределов, поэтому, возможно, проверка этого предшествующего может быть в порядке.

0 голосов
/ 10 июля 2020

Я нашел решение здесь: Как извлечь числа из строки в Python?

import os
import re

filepath = './'

for filename in os.listdir():
    numbers_in_name = re.findall('\d',filename)
    if (numbers_in_name != [] and int(numbers_in_name[0]) < 5 ) :
        print(os.path.join(filepath,filename))
        #do other stuff with the filenames
    

Вы можете использовать re, чтобы получить числа в имени файла. Это напечатает все имена файлов, где первое число, например, меньше 5.

0 голосов
/ 10 июля 2020

Если файлы имеют числовые последовательные имена, начинающиеся с 1.txt, вы можете использовать range(), чтобы помочь создать имена файлов:

for num in range(1, 14400):
    filename = "data/%d.txt" % num
...