发布于 2026-01-05 1 阅读
0

用 Python 实现简单任务的自动化真是太棒了

用 Python 实现简单任务的自动化真是太棒了

封面照片由 Tim Easley 拍摄,来自 Unsplash。

这篇帖子只是想简单地记录一下我昨天在工作中遇到的一件事。

当时我正埋头苦干,做着机械工程师的工作。你知道,测量各种东西,眯着眼睛观察,做笔记,购买各种螺栓和螺丝。诸如此类的日常工作。

我刚下载了一些夹具的3D模型文件,这个夹具我们要用在一个工装夹具里——是真的夹具,软件测试的朋友们别介意。就是这个夹具。文件下载过来的时候,我倒吸了一口凉气。所有文件的扩展名都错了!我明明点击的是下载一个包含.sldprt(单个零件)和.sldasm(装配体)文件的文件夹,结果下载出来的却是.txt.prt.1和.js.asm.1文件。这是怎么回事?!更糟糕的是,里面还夹杂着几个XML文件——对我来说毫无用处!

于是我右键点击第一个文件,重命名并改成了合适的扩展名。然后,当我右键点击第二个文件(大约30个文件中的一个)时,我内心的开发者开始发脾气了。“我们不必忍受这种事!”他喊道,把他的小键盘扔过他那小小的“内部开发者办公室”。(我的“内部开发者创业公司”有办公室和门,因为我不是个怪物。)

总之,再说回他。“我们不必忍受这种待遇!”他喊道。“我们不是只会埋头苦干的文员!我们会编程!我们很快就能写出剧本!”

“我们可以这么做,”我内心的项目经理插话道。(我内心的创业团队人员充足。)“但这真的能节省我们多少时间呢?我们两分钟就能把所有这些文件重命名完毕。”

“好吧,”内心的开发者回答道,下嘴唇开始固执地翘了起来。“那我会在120秒或更短的时间内完成。”

然后他说:“糟了。我们用的是没有 Bash 的 Windows 机器,我一时想不起 PowerShell 的字符串操作语法了。或者说,至少我记不太清了,来不及完成。哦,等等!我们会 Python!我们可以做任何想做的事!”

所以,他很快就引导我搜索遍历目录并重命名文件的方法。我必须搜索,因为我知道有好几种方法可以做到。是 `__init__` os、`__init__` 还是shutil`__init__` 呢pathlib?我觉得任何一种方法都可行。我知道有很多方法可以实现我的需求,但我需要的是一种只需 120 秒就能完成的方法,包括谷歌搜索和实际操作。

啊哈!明白了!

“已经过去30秒了,”我内心的项目经理警告道,“赶紧行动!”

于是我打开终端,启动了ipython我最喜欢的 Python REPL。(是的,我用过bpython。是的,它很棒。我仍然喜欢ipython。)

import os

for filename in os.listdir("."):
    if filename.endswith(".1"):
        basename = filename[:-6]
        extension = filename[-5:-2]
        os.rename(filename, basename + ".sld" + extension)
Enter fullscreen mode Exit fullscreen mode

我的内部开发团队击掌庆祝,并碰杯手中的 La Croix 气泡水罐。

这是我写过的最漂亮、最优雅的代码吗?不是。但我在120秒内完成了吗?是的。它运行正常吗?是的。我感觉自己像个魔法师吗?那当然。

Python 太棒了,无论我用它做什么,它都能让我感到快乐。

片尾彩蛋

既然我现在不用上班,可以自由支配时间,我决定我更喜欢这个方案:

from pathlib import Path

for file in Path(".").glob("*.1"):
    name, ext, _ = file.name.split(".")  # There were no other .'s in the names
    file.rename(f"{name}.sld{ext}")
Enter fullscreen mode Exit fullscreen mode

最初发布于assert_not magic?

文章来源:https://dev.to/rpalo/automating-simple-things-with-python-is-awesome-3jlg