使用 C++ 25 年后,Python 的新手。这个例子是你“用 Python 思考”的方式吗? [关闭]

问题描述 投票:0回答:0

我喜欢 C++。这不仅是我习惯的,也是我自然倾向于思考的方式。我喜欢把问题分解成小块,一次处理一个,然后构建一个整体。我发现用 C++ 编写代码很有趣。但是,至少可以说它很耗时......

我很喜欢 Python,但我想成为“Pythonic”,而不仅仅是用 Python 编写 C++ 代码...

如果视频大于 3.5gigs,GoPro 会将其分成多个片段。例如:

GX010921.MP4 GX020921.MP4
前两个字符总是“GX”

然后是段 ID 的两位数字。

然后是视频ID的4位数字。

然后是“.MP4”

我永远不会为段 ID 使用两位数,因为在此之前相机会过热或耗尽电池。所以我可以把它当作:

"GX0" + segment_id + video_id + ".MP4"


当我有很多视频文件时就会出现问题。我可能没有意识到视频被截断了,因为其他片段将位于文件目录的底部。我想把所有的部分放在一起。所以我决定:

GX01 + video_id + "_" + segment_id + ".MP4"


所以:

GX010920.MP4 GX010921.MP4 GX010922.MP4 GX010923.MP4 GX010924.MP4 GX010925.MP4 GX020921.MP4 GX020923.MP4 GX030923.MP4 GX040923.MP4
变成:

GX010920.MP4 GX010921_1.MP4 GX010921_2.MP4 GX010922.MP4 GX010923_1.MP4 GX010923_2.MP4 GX010923_3.MP4 GX010923_4.MP4 GX010924.MP4 GX010925.MP4
我用 C++ 编写了一个程序来执行此操作(甚至不到 100 万行代码!)并且运行良好。所以我认为这对我来说是一个很好的小练习,可以让我开始尝试学习 Python 的思维方式。

这是我第一次尝试用 Python 编写的东西,我想到了这个:

import os for n in range(2,10): for file in [f for f in os.listdir() if "GX0"+str(n) in f]: if (n == 2): os.rename("GX01" + file[4:8] + ".MP4", "GX01" + file[4:8] + "_1.MP4") os.rename(file, "GX01" + file[4:8] + "_" + str(n) + ".MP4")
它有效,它的大小是 C++ 程序的一小部分,我设法在很短的时间内编写了它。即使是新手。我只是想知道人们的意见。

干净吗? “好”?你会把它浓缩更多吗?不同的方法?

欢迎所有建议。非常感谢。

python list-comprehension
© www.soinside.com 2019 - 2024. All rights reserved.