Как читать txt файлы из определенной папки?

Рейтинг: 0Ответов: 4Опубликовано: 10.01.2023

Допустим есть 10 txt файлов в одной папке (мне нужно что бы софт брал txt файлы именно с одной папки) и у файлов разные названия. Как сделать так что бы он прочитал все эти 10 файлов из одной папки?

Ответы

▲ 1

для этого используйте модуль os, который позволяет забирать название файлов в указаной папке.

Пример

import os

for filename in os.listdir("path_to_folder"):
    print(filename)

для чтения самих файлов используйте with

for filename in os.listdir("path_to_folder"):
    with open("path_to_folder\\" + filename) as file:
         txt_includes = file.readlines()
         print(txt_includes)

Можно отделить файлы от папок и работать только с файлами, если вдруг окажется папка, где ее быть не должно

path_to_folder = "path_to_folder"
for filename in os.listdir(path_to_folder):
    path_to_file = path_to_folder + "\\" + filename
    if os.path.isfile(path_to_file):
        with open(path_to_file) as file:
            txt_includes = file.readlines()
        print(txt_includes)
▲ 1

Можно следующим образом, в функцию files передается путь по которому нужно искать файлы

import os


def files(path):
    for file in os.listdir(path):
        if os.path.isfile(os.path.join(path, file)):
            yield file


for file in files("."):  
    file_info = file.split('.')
    if file_info[1] == 'txt':
        print(file)  # здесь делаете действие над файлом
▲ 1

Удобно использовать glob.glob():

import glob

for file in glob.glob(r'c:\test\*.txt'):  # маска для поиска файлов
    with open(file, 'r') as f:
        print(f'В файле `{file}` {len(f.readlines())} строк')
В файле `c:\test\1.txt` 5 строк
В файле `c:\test\2.txt` 7 строк
В файле `c:\test\3.txt` 5 строк
В файле `c:\test\BW_fault_codes.txt` 18 строк
В файле `c:\test\complex.txt` 11 строк
В файле `c:\test\conv.txt` 3883 строк
В файле `c:\test\dat.txt` 4 строк
...
▲ -1
folder_path = "path to folder"
all_files = [os.path.join(folder_path, f) for f in os.listdir(folder_path) 
if f.endswith(".csv")]
data_list = []