Есть ли способ прочитать n текстовых файлов в папке и сохранить как переменную n str?

#python #text #directory #batch-processing #read-text

#python #текст #каталог #пакетная обработка #чтение текста

Вопрос:

Я хочу прочитать N количество текстовых файлов в папке и сохранить их как N количество переменных. Обратите внимание, что вводом будет просто путь к папке, и количество текстовых файлов в нем может варьироваться (поэтому n).

Вручную я делаю это, как показано ниже в коде, который необходимо полностью изменить:

 import os
os.chdir('C:/Users/Documents/0_CDS/fileread') # Work DIrectory

#reading file
File_object1 = open(r"abc","r")
ex1=File_object1.read()
File_object2 = open(r"def.txt","r")
ex2=File_object2.read()
File_object3 = open(r"ghi.txt","r")
ex3=File_object3.read()
File_object4 = open(r"jkl.txt","r")
ex4=File_object4.read()
File_object5 = open(r"mno.txt","r")
ex5=File_object5.read()
  

Комментарии:

1. Используйте список или словарь.

Ответ №1:

Вы можете использовать встроенный в Python dict . Здесь я даю ключи каждого ввода только в качестве имени файла, вы можете называть их так, как вам нравится.

 import os 
path = 'Your Directory'
result_dict = {}
for root, dirs, files in os.walk(path):
    for f in files:
       with open(os.path.join(path,f), 'r') as myfile:
          result_dict[f] = myfile.read()
  

Комментарии:

1. Я получаю сообщение об ошибке, как показано ниже: TypeError: walk () отсутствует 1 требуемый позиционный аргумент: ‘top’ Примечание: Все файлы в папке являются файлами .txt

2. @soumyasharma да, в нем была ошибка, исправил ее.

3. Привет, это выдает ошибку, упомянутую ниже: codecs.charmap_decode (input,self.errors, decoding_table)[0] Ошибка UnicodeDecodeError: кодек ‘charmap’ не может декодировать байт 0x81 в позиции 14: символ сопоставляется с <неопределенным>

4. понял .. если в папке есть файл, отличный от .txt folder..it выдает эту ошибку

Ответ №2:

Если вас не интересуют имена файлов, а только содержимое, и есть только файлы в каталоге

 from os import listdir


l = [open(f).read() for f in listdir('.')]