python代替shell脚本_Python是否可以替代Windows命令行/批处理脚本?

我对bash有一些经验,我不介意,但是现在我正在做大量的Windows开发工作,我需要做一些基本的工作/使用Windows命令行语言。出于某种原因,所说的语言确实让我恼火,所以我考虑学习Python并使用它。

Python适合这样的东西吗?移动文件,创建脚本来执行诸如解压缩备份和恢复SQL数据库等操作。

对!我是最近的一个皈依者。我曾经写过大量的Windows BAT文件(加上Nant)来完成这些任务,然后切换到了Python,我无法相信它有多简单和高效。

请参阅stackoverflow.com/questions/209470/…。Windows的答案与bash的答案完全相同。

python非常适合这些任务,我想比起Windows批处理文件,在开发和调试中要容易得多。

问题是,我认为,要确保运行这些脚本的所有计算机都安装了python,这是多么的简单和无痛。

很容易将python转换为.exe。在Windows上,它还具有指向COM和Windows服务的良好链接

总结

Windows:不用考虑,使用python。Unix:Quick或在脚本用于bash时运行它,严肃和/或长寿命脚本用于python。大话

在Windows环境中,python绝对是最好的选择,因为cmd很糟糕,PowerShell还没有真正解决。更重要的是,python可以在多个平台上运行,因此它是一个更好的投资。最后,python有一个巨大的库集,所以您几乎不会碰到"上帝-我-不能做-那"墙。对于cmd和powershell,这不是真的。

在Linux环境中,这有点不同。许多一行程序都更短、更快、更高效,而且在纯bash中可读性更高。但是,如果您知道您的快速而肮脏的脚本将停留一段时间,或者需要改进,那么就使用Python,因为它更易于维护和扩展,并且您将能够使用标准库完成使用GNU工具可以完成的大部分任务。如果不能,您仍然可以从Python脚本调用命令行。

当然,您可以使用-c选项从shell调用python:

1python -c "for line in open('/etc/fstab') : print line"

关于用于系统管理任务的python的更多文献:

IBM实验室的观点。

将bash和python与脚本报告进行比较的一个好例子。

基本知识。

必备书。

当然,对于这些任务,python是一个很好的选择(我相信很多人会推荐PowerShell)。

下面是从这个角度的一个很好的介绍:

http://www.redhatmagazine.com/2008/02/07/python-for-bash-scripters-a-well-keep-secret/

编辑:关于GNUD的关注:http://www.portablepython.com/

RedhatMagazine.com URL不再存在。archive.org捕获了网页:web.archive.org/web/20080517104907/http://hellip;

@BKB肯定有一个有效的顾虑。下面是一些链接,您将要检查是否遇到任何标准库无法解决的问题:

pywin32是一个用于处理低级win32 API(高级文件系统修改、COM接口等)的包。

TimGolden的python page:他维护了一个基于pywin32的wmi包装包,但是一定要查看他的"win32 how do i"页面,了解如何在python中完成典型的Windows任务的详细信息。

您知道PowerShell吗?

PowerShell(以及cmd和bash)与Python的美丽相比简直是可怕的。是的,我是一个狂热者。)

任何东西都可以很好地替代Windows中的批处理文件系统。Perl、Python、PowerShell都是不错的选择。

Python当然很适合这样。如果沿着这条路走,您可能还需要研究scons,它是一个用python构建的构建系统。很酷的是,构建脚本实际上是完整的python脚本本身,所以您可以在构建脚本中做任何您可以在python中做的事情。相比之下,它使make看起来相当贫血。

在重读您的问题时,我应该注意到,scons更适合于构建软件项目,而不是编写系统维护脚本。但无论如何,我会毫不犹豫地向您推荐python。

作为后续工作,在一些实验之后,我发现python最有用的是任何涉及文本操作(yourstringhere.replace(),更复杂的东西使用regex)的情况,或者快速测试一些基本概念,这是非常好的。

对于像SQL数据库还原脚本这样的东西,我发现我通常还是求助于批处理文件,因为它通常足够短,以至于需要更多的python代码来进行适当的系统调用,或者我可以重用其他人的代码片段,从而将编写时间缩短到足以调整现有代码以满足我的需要。

作为一个附录,我强烈推荐IPython作为一个伟大的交互式shell,具有制表完成和轻松的docstring访问功能。

python和pywin32可以很好地实现Windows自动化。但是,与WinOWS脚本宿主一起使用的vbscript或jscript也可以正常工作,并且不需要安装任何其他内容。

我已经在Linux/Unix和Windows环境中,在python、perl、批处理文件、bash等环境中完成了大量的脚本编写工作。我的建议是,如果可能的话,安装cygwin并使用bash(从您的描述来看,安装脚本语言或env不是问题?)你会更舒服的,因为过渡是最小的。

如果这不是一个选择,那么这是我的选择。批处理文件非常笨拙和有限,但对于诸如"复制一些文件"或"重新启动此服务"之类的简单任务有很大意义。Python将更干净、更易于维护,而且功能更强大。但是,缺点是要么最终使用子进程、popen或类似的方法从python调用外部应用程序。否则,您最终会编写更多的代码来执行批处理文件中相对简单的操作,比如复制一个文件夹中的文件。这很大程度上取决于脚本在做什么。例如,在Python中,文本/字符串处理将更加干净。

最后,它可能不是一个有吸引力的替代方案,但您也可以考虑将vbscript作为替代方案。我个人不喜欢把它当作一种语言来使用,但是如果说可移植性有什么问题的话,那么它会因为在任何一个Windows版本中都可以从现成的软件中获得而胜出。因此,我发现自己编写的脚本在vbscript中作为批处理文件非常笨拙,因为我通常不能依赖于Windows上可用的python、perl或bash。

"复制一个满是文件的文件夹"——一个标准的模块shutil可能会有所帮助。

我最近使用了很多Windows脚本文件。比批处理脚本更强大,而且由于它使用Windows脚本,所以没有什么可安装的。

尽管我很喜欢python,但我认为它不是替换基本的Windows批处理脚本的好选择。

我看不到有人必须导入诸如sys、os或getopt之类的模块才能执行shell可以执行的基本操作,比如调用程序、检查环境变量或参数。

而且,根据我的经验,goto对于大多数系统管理员来说比函数调用更容易理解。

我发现显式的os.this和sys.that是Python的优势。Shell随机收集的特性很难在心理上得到控制。python的库使它更容易理解。

我必须同意S.Lott的观点。这不需要太多额外的工作,而且明确性可以防止全局命名空间混乱。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值