stupidroot Ответов: 2

Как добавить текстовый файл с именем файла, размером файла и описанием файла?


Есть рабочий каталог, куда я скачал 7 PDF-файлов. Файлы сортируются по времени модификации, поэтому порядок таков: (file1.pdf, file2.pdf .. file7.pdf).

Есть текстовый файл (description.txt), который содержит 7 строк.

Подобный этому:

описание1
description2
.
.
description7


У меня есть текстовый файл (helloworld.txt) что я хочу добавить к каждой строке с {filename} {filesize} {description} вот так:

{file1.pdf} {Размер файла file1.pdf} {описание1}
{файл2.формат PDF} {Размер файла file2.формат PDF} {description2}
.
.
{file7.формат PDF} {Размер file7.формат PDF} {description7}

Что я уже пробовал:

Я написал скрипт на Python:

import os
import glob


textfilename = 'helloworld.txt'


descriptiontext = open("description.txt", 'r')
with open(textfilename, 'a') as textfile:  # Open the text file for appending
    for filename in glob.iglob('*.pdf'):  # For every file in the current directory matching '*.pdf'
        stat = os.stat(filename)  # os.stat gets various file statistics
        filesize = stat.st_size/1024/1024
        filesize = round(filesize,2)
        description = descriptiontext.readline()
        textfile.write(f'{filename}   {filesize}   {description} \n')  # \n means newline


Я запустил код, но ... helloworld.txt это не совсем так. В результате получается следующее:

файл1.формат PDF 0.08 описание1

file6.формат PDF 0.21 description2

файл file3.формат PDF 0.14 description3

файл2.формат PDF 0.02 description4

file5.формат PDF 0.14 description5

file7.формат PDF 0.15 description6

файл file4.формат PDF 0.2 description7


Порядок имен файлов неверен (сопряжен с размером файла). Порядок не такой, как в порядке папок (порядок загрузки). (Я ничего не менял. Он сортируется по времени модификации.)
Моя ОС: Linux Lubuntu 20.04 LTS

Может ли кто-нибудь решить эту проблему?

Richard MacCutchan

Он будет работать только в том случае, если оба списка расположены в одном порядке. Лучше всего сначала прочитать описания, чтобы вы могли сопоставить имена файлов по мере их получения из системного вызова.

2 Ответов

Рейтинг:
1

Richard Deeming

Глядя на документацию, glob звонки os.listdir[^], и listdir не возвращает файлы в каком-либо определенном порядке:

Возвращает список, содержащий имена записей в каталоге, заданном по пути. Список приведен в произвольном порядке.
Вам нужно будет самостоятельно отсортировать возвращенный список.


Рейтинг:
1

ShadowClaw11

Почему бы не попробовать ОС.прогулка() функция? Это еще один способ обхода каталогов и возврата пути к файлу и имени файла. Нет никакой гарантии, что это сработает так, как вы хотите, но это стоит попробовать.