Как читать txt файлы из определенной папки?
Допустим есть 10 txt файлов в одной папке (мне нужно что бы софт брал txt файлы именно с одной папки) и у файлов разные названия. Как сделать так что бы он прочитал все эти 10 файлов из одной папки?
Ответы (4 шт):
Автор решения: Dmitry
→ Ссылка
для этого используйте модуль 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)
Автор решения: Clark Devlin
→ Ссылка
Можно следующим образом, в функцию 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) # здесь делаете действие над файлом
Автор решения: Алексей Р
→ Ссылка
Удобно использовать 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 строк
...
Автор решения: Aribama
→ Ссылка
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 = []