Есть ли способ создать функцию для загрузки всех файлов данных в каталоге и вывода их имени и содержимого? -Python 3 - PullRequest
0 голосов
/ 17 апреля 2019

Есть ли способ создать функцию для загрузки всех файлов данных в каталоге, а затем вывести их имена и содержимое?

Ввод: Получить все файлы в заданном моем каталоге(wow.txt, testting.txt и т. д.)

Процесс: Я хочу запустить все файлы с помощью функции

Вывод: Я хочу, чтобы на выходе было указано общее количество обработанных файлов и все имена файлов и их соответствующее содержимое под ним.

Например:

Total Number of Documents: 6

/home/file/wow.txt

"all of its content"

/home/file/www.txt

"all of its content"

Вот мой код:

#Import Functions  
import glob
# get all the .txt files
files=glob.glob("*.txt")  

#Load Data Function
def load_data(files):
    """
    Input  : path to all .txt files
    Purpose: loading all text file
    Output : list of documents along with their respective content 

    """

    documents_list=[]
    content=[]

    for file in files:
        with open(file,"rt",encoding="latin-1") as fin:
            print(file)
            for line in fin.readlines():
                text = line.strip()
                documents_list.append(text)
        print("Total Number of Documents:",len(documents_list))
        content.append( text[0:min(len(text),100)])
    return documents_list,content

#Output
load_data(files)

Вот мой вывод:

enter image description here

enter image description here

  1. Как вы можете видеть в первой части вывода, он показывает каждый файл и случайное число.Вместо этого у него должно быть только общее количество документов (которое равно 5)

  2. Показывает содержимое всех файлов, но не разделяет их по файлам.Как вы можете видеть по красной линии, которая показывает конец первого файла, а под красной строкой - начало другого.

Есть предложения?

1 Ответ

0 голосов
/ 17 апреля 2019
def print_files_in_directory(directory):
    files = [f for f in os.listdir(directory) if os.path.isfile(f)]
    print(f'Total Number of Documents: {len(files)}')
    for f in files:
        file_path = os.path.join(directory, f)
        print(file_path)
        print('\n')
        with open(file_path, 'r') as fp:
            print(fp.read())

Если вы хотите, чтобы он включал файлы в подкаталоги, вам придется либо вручную откатить эти подкаталоги, либо использовать os.walk ()

...