博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python 重复执行任务_使用Python自动执行数字艺术家的重复任务
阅读量:2524 次
发布时间:2019-05-11

本文共 3340 字,大约阅读时间需要 11 分钟。

python 重复执行任务

艺术家和设计师应该知道如何编码。 在那里,我说了。

现在,我可以深入探讨一下艺术家的思维方式和开发人员/工程师的思维方式没有什么不同,或者“非技术艺术家”的形象是相对较新的现象。 这些是另一篇文章的主题。 就本文的目的而言,只要说一点点代码就可以使您不仅更好地了解数字工具的工作原理,而且可以帮助您更有效地创建工作。

无论您是在为付费客户开展大型协作项目,还是将数字艺术用作自由形式,自由运转的宣泄引擎,都没有关系。 我们每个人都想最有效地利用我们的时间。 对我自己来说,如果我发现自己连续三次执行某项单调的任务,那我已经在考虑如何使它自动化并使计算机为我工作。

自动化意味着将脚本拼凑在一起。 编码。 当涉及与数字媒体相关的脚本任务时,很难找到比Python更合适的语言。 Python是一种非常流行的开源脚本语言,用于编写各种开源软件。

对于数字广告而言,学习Python还有其他优势。 语言语法相对易于学习, 并且 Python在所有主要平台上都可用。 这意味着无论您运行的是Linux,BSD还是这些专有操作系统之一,脚本都可以随身携带。 不仅如此,Python还与Blender和GIMP等许多数字内容创建工具很好地集成在一起。 甚至某些专有工具都在其中集成了Python。 这意味着您可以使用Python自动化那些程序中的任务,甚至可以添加特定于您特定工作方式的新功能。

您可能会说:“这很好,但要具体。我实际上可以使用Python 什么?”

我很高兴你问。

本系列文章旨在回答这个问题,让您只需要对脚本有一点了解就可以将您的脚趾插入到流中,并了解可能发生的情况。 合理的警告:如果这些文章确实激发了您对脚本编写的兴趣,我强烈建议您阅读在线提供的许多Python课程之一,包括该的 。

我还应该提到,我给出的示例可能使“真正的” Python开发人员感到畏缩。 很好。 最坏的情况是,我们仍然有一个脚本可以完全满足我们的需要。 最好的情况是,在本文的评论部分,我们会提供改进建议。

因此,让我们从简单的事情开始。 我们都知道,FFmpeg和ImageMagick等命令行工具通常是一种一次性进行视频或图像操作的更快方法。 假设您要做的就是对视频进行编码或对PNG进行饱和处理,然后将其转换为JPEG。 发出单个命令比启动具有完整图形界面的程序,加载源媒体然后执行一个小操作要快得多。

但是,问题在于功能强大的命令行工具(例如FFmpeg和ImageMagick)具有很多选项和灵活性。 它们做很多事情,而且都由令人眼花array乱的标志和选项组成,您需要正确输入这些标志和选项。 很难记住完成一项或两项特定任务所需的确切魔咒。

例如,假设您有一个目录,其中包含您生成的PNG图像。 那里有数百甚至数千张单个图像。 现在假设您意识到,不需要将所有这些图像另存为16位RGBA PNG。 如果这些图像全部转换为1位黑白PNG图像,则可以节省大量磁盘空间并缩短加载时间。 当然,您可以重新渲染,但是图像已经存在。 使用FFmpeg,您可以搅动这些图像并在更少的时间内转换它们……如果您只记得执行该操作的确切命令。

幸运的是,您之前必须做几次,所以花了一些时间,并整理了一个名为make_1bit.py Python小脚本。 它的方式更容易记忆make_1bit.pyffmpeg -i something -flipflop -blah blah -please -o somethingelse或什么的。 这是脚本的内容(具有适合此列宽的换行符;有关格式化脚本的正确方法,请参见下文):

import subprocess     
subprocess.call(['ffmpeg', '-f', 'image2', '-i',
'%04d.png', '-pix_fmt', 'monob', '-threads', '0',
'%04d.png'])

让我们花点时间浏览一下脚本并描述它的作用。 第一行, import subprocess ,导入一个名为subprocess的Python 模块 。 将模块视为别人已经编写的代码块。 您只需要使您的脚本知道该代码即可。 这是通过import语句完成的。 在这种情况下,您要导入子进程模块,这是一个专门用于启动命令的Python模块,就像在命令行中键入命令一样。

在下一个代码块( subprocess.call(['ffmpeg',...]) )中,您实际上是在该模块中使用代码来为您运行FFmpeg。 整个FFmpeg命令分为字符串列表。 在Python中, 列表只是数据的集合。 用方括号( [] )表示,数据的每一位都用逗号分隔。 在这种情况下,数据的每一位都是一个字符串 ,或者是一些用单引号引起来的文本。 列表中的每个字符串都是您要运行的FFmpeg命令的参数(标志),顺序正确。

在此特定示例中,我们假定脚本与图像位于同一目录中,并且图像具有编号的文件名,例如0001.png,0002.png,0003.png等。

出于组织上的考虑,您可能希望将每个参数对放在各自的行上。 这样一来,可以更轻松地了解正在发生的事情。 ( 注意:Python在代码中对“空白”(空格和制表符)非常讲究。因此,请确保使用空格或制表符不要混合!并且在缩进时使用相同数量的空格。 )这样做,您的脚本可能如下所示:

import subprocess     
subprocess.call(['ffmpeg',
                 '-f', 'image2',
                 '-i', '%04d.png',
                 '-pix_fmt', 'monob',
                 '-threads', '0',
                 '%04d.png'])

现在,您所要做的就是从该目录中运行python make_1bit.py ,BOOM文件已转换! 无需记住FFmpeg的所有各种标志。 该脚本为您记住了这一点。 当然,如果您想直接运行FFmpeg(或此命令的某些变体),则很容易打开脚本文件并使这些标志可用并清楚地组织起来作为参考。 您甚至可以在脚本中添加注释,以便更轻松地知道每个标志的作用:

import subprocess     
subprocess.call(['ffmpeg',
                 '-f', 'image2',      # Read input as images
                 '-i', '%04d.png',    # Input files (sequential PNGs)
                 '-pix_fmt', 'monob', # Output colorspace is 1-bit
                 '-threads', '0',     # Use all available CPU cores
                 '%04d.png'])         # Output files (overwrite input)

这就是我们的起点。 我们一次制作一个小脚本。 关键是要节省我们的时间,并通过简化和自动化重复或繁琐的任务来使我们专注于完成工作。

本系列中将会有更多内容……但是与此同时,如果您碰巧使用Python脚本来简化任务(无论是否用于创造性工作),也许您可​​以使用注释部分来解释您的工作

翻译自:

python 重复执行任务

转载地址:http://ruczd.baihongyu.com/

你可能感兴趣的文章
SSH错误:packet_write_wait: Connection to 10.57.19.250 port 22: Broken pipe
查看>>
ACTION 关联表之间查询语句 SQL语句写法
查看>>
find命令
查看>>
Ambari——大数据平台的搭建利器之进阶篇
查看>>
模块内高内聚?模块间低耦合?MVC+EF演示给你看!
查看>>
ACM学习心得及书籍推荐
查看>>
springcloud
查看>>
Binary Tree Inorder Traversal
查看>>
npm、yarn、pnpm
查看>>
洛谷 P2590 [ZJOI2008]树的统计
查看>>
软件工程结对项目博客作业
查看>>
C++ 虚函数表解析
查看>>
#define 宏定义
查看>>
【Linux学习】python脚本直接运行与nohup运行结果不同
查看>>
2017《面向对象程序设计》课程作业一
查看>>
Bootstrap基础
查看>>
Druid.jar包
查看>>
循环神经网络(Recurrent Neural Network,RNN)
查看>>
如何实现水平居中和垂直居中
查看>>
bzoj1012
查看>>