#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('.')]