如何以与文件夹中相同的顺序附加带有 pdf 文件名、大小和描述的 helloworld.txt(按修改时间排序)?

Posted

技术标签:

【中文标题】如何以与文件夹中相同的顺序附加带有 pdf 文件名、大小和描述的 helloworld.txt(按修改时间排序)?【英文标题】:How to append the helloworld.txt with pdf filenames, sizes and description in the same order like in the folder (sort by modification time)? 【发布时间】:2020-05-20 13:54:52 【问题描述】:

我有一个包含 pdf 文件的文件夹,我有一个文本文件:helloworld.txt 和另一个 txt 文件 description.txt

helloworld.txt 默认为空。 description.txt 包含文件的描述。每一行一个描述。

我希望在 helloworld.txt 的每一行中都包含 pdf 文件的名称、文件的大小和文件的描述。

所以每个 helloworld.txt 行看起来像这样:filename filesize description

文件夹中有很多行,例如 pdf 元素。

我有以下代码sn-p:

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

脚本运行得几乎完美。 filenamefilesizedescription 在好地方。

问题:pdf 文件夹设置为按修改时间排序(我如何从站点下载),它看起来像在文件夹中(Lubuntu 20.04 LTS)但是在我运行脚本后 filename 序列不一样作为 helloworld.txt 文件中的文件夹序列。

如何修改代码以在 helloworld.txt 中以相同的顺序写入 filename,就像在按修改时间排序的文件夹顺序中一样?

【问题讨论】:

您想要一个文本文件,其中的每一行都显示 PDF 文件的大小(以 KB 为单位)? 是的,以 KB 或 MB 或 GB 为单位的文本文件。 查看下面的答案 【参考方案1】:

首先,既然您要求一个简单的解决方案,我想指出,如果您使用的是类似于 Linux shell 的任何东西,这可以在命令行中完成,如下所示:

$ ls -al
total 5968
drwxr-xr-x   5 edwsmith  staff      160 May 20 10:01 .
drwxr-xr-x  37 edwsmith  staff     1184 May 20 09:56 ..
-rw-r--r--   1 edwsmith  staff  1024000 May 20 09:57 1.pdf
-rw-r--r--   1 edwsmith  staff  2024000 May 20 09:57 2.pdf
-rw-r--r--   1 edwsmith  staff       39 May 20 10:01 textfile.txt

$ cat textfile.txt
this is some existing text in the file

$ ls -l *.pdf | cut -d ' ' -f 8,12 >> textfile.txt

$ cat textfile.txt
this is some existing text in the file
1024000 1.pdf
2024000 2.pdf

在 python 中做这件事有点多,但不多:

import os
import glob

textfilename = 'textfilename'

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
        textfile.write(f'File filename has size filesize bytes\n')  # \n means newline

【讨论】:

【参考方案2】:
import os
with open(textfile,'a') as f:
    for item in os.listdir(os.path.abspath(os.curdir)):
        if item.endswith('.pdf'):
            f.write(str(os.path.getsize(item))

【讨论】:

【参考方案3】:
import os

directory = '/home/user/Documents/'

with open("hello.txt", "a") as f: 
    for file in os.listdir(directory):
        if file.endswith(".pdf"):
            size = os.path.getsize(directory + file)
            f.write(str(size))

【讨论】:

以上是关于如何以与文件夹中相同的顺序附加带有 pdf 文件名、大小和描述的 helloworld.txt(按修改时间排序)?的主要内容,如果未能解决你的问题,请参考以下文章

如何以与 WhatsApp 相同的方式实施 APNS?

如何从数据网格中获取已排序的项目源

如果Google Drive文件夹中已经存在相同名称的文件,则附加代码以覆盖PDF

如何从卡片或类似文件中获取标题以与弹性框具有相同的高度?

Apache 加载任何以与 url 中使用的相同字符串开头的文件。如何防止这种情况?

如何在yaml cpp中保留插入顺序