网站搜索

我用一个简单的 Python 脚本替换了 3 个付费的生产力应用


为多款应用付费,而我甚至没有充分使用它们,感觉像是在浪费。每个应用都有不同的用途,但有一个共同的目标:管理和整理我的文件。单独看,每个应用都很合理。但放在一起,它们感觉有些过头了。

那时我意识到了一些事情。为什么我需要为几乎相同的任务使用三个不同的付费工具呢?我打开了一个代码编辑器,并开始运用我的 Python 技能来想出一些东西。结果比我预期的要好。不是,它并不能完全替代那些工具。但它能完成工作。

文件杂耍者

文件自动化很棒,直到它开始感觉像是过度工程

我安装 File Juggler 的原因非常简单:我的下载文件夹一片混乱。截图混在 PDF 文件中,随机的 ZIP 文件和图片放在一起,安装程序堆积如山。File Juggler 承诺通过规则自动管理这些文件:“把图片移动到这里”,“把文档发送到那里”,“如果符合条件就重命名这个”。公平地说,它确实非常有效。







但像许多这些自动化工具一样,它有一个附带条件。试用期过后,你需要付费才能继续使用它。更重要的是,随着我深入了解它,我越发意识到我实际上并不需要它提供的大部分功能。

在某个时刻,我恍然大悟:这实际上并不是一个“功能丰富的自动化问题”。它只是对文件进行循环,并带有一些条件。这是 Python 可以轻松处理的事情。

这是一个简化版本,展示了它被替代成什么样子:

from pathlib import Path
import shutil

source = Path("C:/Users/YourName/Downloads")

folders = {
    ".jpg": "Images",
    ".png": "Images",
    ".pdf": "Documents",
    ".zip": "Archives",
    ".exe": "Installers"
}

for file in source.iterdir():
    if file.is_file():
        target_folder = folders.get(file.suffix.lower())

        if target_folder:
            destination = source / target_folder
            destination.mkdir(exist_ok=True)

            shutil.move(str(file), destination / file.name)

即使你以前从未写过 Python,这也相当易读:

  • 我们查看下载文件夹中的每个文件
  • 检查其扩展名(.jpg、.pdf 等)
  • 将其与一个简单的规则词典进行匹配
  • 将它移动到相应的文件夹中

明确地说,File Juggler 的功能远不止这些。它可以实时监控文件夹,应用复杂的条件,甚至触发超出简单文件移动的操作。但我并没有使用这些功能。我只是需要我的文件去到它们应该去的地方。为此,十几行 Python 代码就绰绰有余了。

高级重命名工具

我只是触及了一个强大工具的表面

如果有一类实用软件容易用得过头,那就是批量重命名工具。Advanced Renamer 是一个很好的例子。它功能非常强大。你可以建立复杂的重命名规则,使用标签,应用脚本,实时预览更改,并微调文件名的几乎每个部分。值得称道的是,它甚至提供了一个供个人使用的免费版本。

然而,如果你是专业使用它,你将需要一个许可证。一些更高级的功能显然也是针对付费用户的。至少对我来说,问题要简单得多。

大多数时候,我只是想清理杂乱的文件名,应用一致的命名模式,也许还会添加一个数字或日期。但每次我打开 Advanced Renamer 时,都被一个充满我不需要的选项的复杂界面迎接。

在某个时刻,我意识到这跟以前的模式一样:我在用一个非常强大的工具来完成一个非常可预测的任务。取而代之的是这个:

from pathlib import Path

folder = Path("C:/Users/YourName/Downloads/Images")

files = [f for f in folder.glob("*") if f.is_file()]

for i, file in enumerate(files):
    new_name = folder / f"photo_{i+1}{file.suffix}"
    
    if not new_name.exists():
        file.rename(new_name)
    else:
        print(f"Skipped: {new_name.name} already exists!")

这个脚本做三件简单的事情:

  • 循环遍历文件夹中的所有文件
  • 给每一个分配一个连续的编号
  • 使用一致的格式重命名它们

对于更高级的用例,Python 还支持正则表达式,这意味着你可以复制这些工具所宣传的许多智能重命名逻辑。但实际上,我很少需要那种复杂程度。

Adobe Acrobat 专业版

仅仅为了合并几个 PDF 就付订阅费让我觉得不太合适

PDF 工具是那种你平时不会想到,但突然需要时才意识到的重要工具。对我来说,这通常意味着合并几个 PDF、重新排列页面,或者偶尔将图像转换成一个文档。我发现 Adobe Acrobat Pro 在这方面相当不错。它可以处理你可能需要的所有 PDF 操作。但它是基于订阅的。

虽然 Acrobat 功能非常强大,但我并没有使用它 95% 的功能。我没有编辑复杂的文档,也没有添加注释或处理 OCR。再一次,模式很熟悉:任务本身很简单,只是被一个庞大的界面和付费订阅所掩盖。

它被以下内容取代了:

from pypdf import PdfWriter  

files = ["file1.pdf", "file2.pdf", "file3.pdf"]

merger = PdfWriter()

for file in files:
    merger.append(file)

merger.write("merged.pdf")
merger.close()

此脚本将一列 PDF 合并为一个文件。如果你需要更多的灵活性,你可以轻松地扩展它以自动抓取文件夹中的所有 PDF,在合并前对它们进行排序,并动态重命名输出文件。

对于需要将图像转换为 PDF 的情况,使用 Pillow 的一个小补充就可以轻松处理。


一个用于文件管理的单一可重复使用的工具

最初只是一个小实验,结果却改变了我在 Windows 上处理日常任务时使用这些工具的方式。目标并不是要取代我提到的软件。我只是想看看是否可以将我最常用的功能放入一个 Python 脚本中。我对最终的结果感到非常满意。

相关文章