返回顶部
首页 > 资讯 > 后端开发 > Python >怎么把Python和Bash结合在一起
  • 795
分享到

怎么把Python和Bash结合在一起

2023-06-15 21:06:04 795人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

这篇文章给大家分享的是有关怎么把python和Bash结合在一起的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。随着linux社区对命令行的依赖不断增长,UNIX shell(如bash和zsh)已发展成为极其强大

这篇文章给大家分享的是有关怎么把python和Bash结合在一起的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

随着linux社区对命令行的依赖不断增长,UNIX shell(如bash和zsh)已发展成为极其强大的工具,可以补充UNIX shell的经验。使用bash和其他类似的shell,可以使用许多强大的功能,例如管道,文件名通配符以及从称为脚本的文件中读取命令的功能。

让我们看一个真实的示例来演示命令行的功能。每次用户登录服务时,其用户名都会记录到一个文本文件中。对于此示例,让我们找出有多少唯一用户使用该服务。

以下示例中的一系列命令通过将较小的构建块链接在一起,显示了更复杂的实用工具的功能:

$ cat names.log | sort | uniq | wc -l

管道符号(|)用于将一个命令的标准输出传递到下一命令的标准输入。在此处的示例中,cat names.txt的输出传递到sort命令中。sort命令的输出是按字母顺序重新排列文件的每一行。随后将其传递给uniq命令,该命令将删除所有重复的名称。最后,uniq的输出传递到wc命令。wc是计数命令,并且设置了-l标志,它返回行数。这使您可以将许多命令链接在一起。

但是,有时所需的内容可能会变得非常复杂,并且将命令链接在一起可能变得笨拙。在这种情况下,shell脚本就是答案。Shell脚本是由Shell读取并按顺序执行的命令列表。Shell脚本还支持某些编程语言基础知识,例如变量,流控制和数据结构。Shell脚本对于将经常重复运行的批处理作业非常有用。不幸的是,shell脚本有一些缺点:

Shell脚本很容易变得过于复杂,并且对于想要改进或维护它们的开发人员来说是不可读的。

这些shell脚本的语法和解释器通常很笨拙且不直观。语法越笨拙,对于必须使用这些脚本的开发人员来说,可读性就越差。

该代码通常无法在其他脚本中使用。脚本之间的代码重用往往很困难,并且脚本往往非常特定于某个问题。

用于高级功能(例如html解析或Http请求)的库不像现代编程和脚本语言那样容易获得。

这些问题会使shell脚本难以处理,并经常导致大量开发人员时间浪费。取而代之的是,Python编程语言可以用作非常有力的替代品。使用Python代替Shell脚本有很多好处:

默认情况下,所有主要的Linux发行版都安装了Python。打开命令行并立即键入python,将使您进入Python解释器。这种普遍性使它成为大多数脚本任务的明智选择。

Python具有非常易于阅读和理解的语法。它的风格强调简约和简洁的代码,同时允许开发人员以适合shell脚本的准系统风格进行编写。

Python是一种解释型语言,这意味着没有编译阶段。这使Python成为编写脚本的理想语言,它允许您以解释的方式快速尝试新代码。这使开发人员可以快速修改,而不必将整个程序写到文件中。

Python是一种功能齐全的编程语言。代码重用很简单,因为Python模块可以轻松导入并在任何Python脚本中使用。脚本可以轻松扩展或构建。

Python可以使用出色的标准库和数以千计的第三方库来处理各种高级实用程序,例如解析器和请求库。例如,Python的标准库包括日期时间库,该库允许将日期解析为指定的任何格式并将其与其他日期轻松比较。

但Python不应替换所有bash命令。编写以UNIX方式运行的Python程序(即读入标准输入并写入标准输出)与为现有的shell命令(如cat和sort)编写Python替代品一样强大。

让我们以本文前面已解决的问题为基础。除了已经完成的工作之外,让我们找出某个用户已登录系统的次数。uniq命令仅删除重复项,但不提供有关有多少重复项的信息。代替uniq,Python脚本可以用作链中的另一个命令。这是一个执行此操作的Python程序(在我的示例中,我将此文件称为namescount.py):

#!/usr/bin/env python  import sys  if __name__ == "__main__":      # Initialize a names dictionary as empty to start with.      # Each key in this dictionary will be a name and the value      # will be the number of times that name appears.      names = {}      # sys.stdin is a file object. All the same functions that      # can be applied to a file object can be applied to sys.stdin.      for name in sys.stdin.readlines():              # Each line will have a newline on the end              # that should be removed.              namename = name.strip()              if name in names:                      names[name] += 1              else:                      names[name] = 1      # Iterating over the dictionary,      # print name followed by a space followed by the      # number of times it appeared.      for name, count in names.iteritems():              sys.stdout.write("%d\t%s\n" % (count, name))

让我们看看这个Python脚本如何适合命令链。首先,它从通过sys.stdin对象公开的标准输入中读取输入。任何输出都将写入sys.stdout对象,这是在Python中实现标准输出的方式。Python字典(在其他语言中通常称为哈希映射)用于获取从用户名到重复计数的映射。要获得所有用户的数量,请执行以下操作:

$ cat names.log | python namescount.py

显示用户出现的次数以及用户名的计数。接下来要做的是按顺序显示最常使用该系统的用户。这可以在Python级别完成,但是让我们使用核心UNIX实用程序已经提供的实用程序来实现它。以前,我使用sort命令对字母进行排序。如果命令提供了-rn标志,它将按降序对行进行数字排序。随着Python脚本按标准输出,只需将命令通过管道传递到sort并检索所需的输出:

$ cat names.log | python namescount.py | sort -rn

这是将Python用作命令链一部分的强大示例。在这种情况下使用Python的优点如下:

  •  与cat和sort等工具链接的能力。简单的实用程序(逐行读取文件并以数字方式对文件进行排序)由久经考验的UNIX命令处理。这些命令也逐行读取,这意味着这些功能可以缩放到大型文件,而且速度很快。

  •  当需要在链中进行一些繁重的工作时,可以编写一个非常清晰,简洁的Python脚本,该脚本将执行其所需的工作,然后将责任转移给链中的下一个链接。

  •  它是一个可重用的模块,尽管此示例专门针对名称,但是如果您向此输入中包含重复行的任何输入,它将打印出每行和重复的数量。通过将Python代码模块化,可以将其应用于各种场景。

为了展示以模块化和管道方式组合Python脚本的强大功能,让我们进一步把问题放大。让我们找到该服务的前五名用户。head是一个命令,它允许您指定一定数量的行以显示给定的标准输入。将其添加到命令链中将得到以下内容:

$ cat names.log | python namescount.py | sort -rn | head -n 5

这仅显示前五个用户,而忽略其余用户。同样,要使五个用户最少使用该服务,可以使用tail命令,该命令采用相同的参数。将Python命令打印到标准输出的结果使可以构建和扩展其功能。

感谢各位的阅读!关于“怎么把Python和Bash结合在一起”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

--结束END--

本文标题: 怎么把Python和Bash结合在一起

本文链接: https://lsjlt.com/news/281530.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么把Python和Bash结合在一起
    这篇文章给大家分享的是有关怎么把Python和Bash结合在一起的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。随着Linux社区对命令行的依赖不断增长,UNIX shell(如bash和zsh)已发展成为极其强大...
    99+
    2023-06-15
  • sql如何把两个查询结果合在一起
    在SQL中,可以使用UNION操作符将两个查询结果合并在一起。例如: SELECT column1, column2...
    99+
    2024-04-09
    sql
  • Python、Unix、Shell和npm:如何将它们结合在一起?
    在现代软件开发中,Python、Unix、Shell和npm是非常常见的工具和语言。Python是一种高级编程语言,广泛用于数据分析、机器学习和Web开发。Unix和Shell是操作系统和脚本语言,用于自动化任务和管理文件系统。npm是一...
    99+
    2023-08-24
    unix shell npm
  • Go 和 Bash 结合起来,是不是更有效率?
    随着技术的不断发展,我们越来越依赖计算机来完成各种任务,而在完成这些任务的过程中,我们也需要不断地寻找更加高效的方式。Go 和 Bash 是两种常用的编程语言,它们各自有着自己的优点和特点。那么,将它们结合起来使用,是否能够提高我们的工作...
    99+
    2023-08-03
    bash 同步 开发技术
  • 在golang中一起执行bash echo和nc
    今日不肯埋头,明日何以抬头!每日一句努力自己的话哈哈~哈喽,今天我将给大家带来一篇《在golang中一起执行bash echo和nc》,主要内容是讲解等等,感兴趣的朋友可以收藏或者有更好的建议在评论...
    99+
    2024-04-05
  • SQL怎么把几个select语句的结果集合到一起输出
    本篇内容主要讲解“SQL怎么把几个select语句的结果集合到一起输出”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SQL怎么把几个select语句的...
    99+
    2024-04-02
  • ps如何把两张图片融合在一起
    本篇内容主要讲解“ps如何把两张图片融合在一起”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“ps如何把两张图片融合在一起”吧!首先打开一张图片。 之后在将另一张图片直接拉进去,再通过图片边上的点...
    99+
    2023-07-02
  • 如何将PHP和Bash的数组结合起来使用?
    PHP和Bash都是非常强大的编程语言,它们都有自己独特的优点。PHP是一种服务器端脚本语言,可用于开发Web应用程序,而Bash是一种Unix shell命令语言,可用于在Linux和Unix系统上编写脚本。在本文中,我们将探讨如何将PH...
    99+
    2023-06-14
    bash 数组 ide
  • css3中怎么把图片叠加在一起
    这篇文章给大家分享的是有关css3中怎么把图片叠加在一起的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。 方法:1、将图片元素放到同一个div容器中;2...
    99+
    2024-04-02
  • windows中zbrush如何把两个模型合在一起
    这篇“windows中zbrush如何把两个模型合在一起”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起...
    99+
    2022-12-05
    windows zbrush
  • windows中goldwave如何把两个音乐合在一起
    本文小编为大家详细介绍“windows中goldwave如何把两个音乐合在一起”,内容详细,步骤清晰,细节处理妥当,希望这篇“windows中goldwave如何把两个音乐合在一起”文章能帮助大家解决疑惑,...
    99+
    2022-12-06
    windows goldwave
  • windows中soundforge如何把两段音频合在一起
    本篇内容主要讲解“windows中soundforge如何把两段音频合在一起”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“windows中soundforge如何把两段音频合在一起”吧!soun...
    99+
    2023-07-04
  • windows中chemdraw如何把两个结构连在一起
    这篇文章主要介绍了windows中chemdraw如何把两个结构连在一起的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇windows中chemdraw如何把两个结构连在一起文章...
    99+
    2022-12-06
    windows chemdraw
  • NumPy、Spring和Python:如何将它们融合在一起?
    NumPy是Python中科学计算的基础库,Spring是Java中最流行的企业级框架,Python则是一种高级编程语言,它们之间似乎没有太多联系。但实际上,它们之间是可以融合在一起的。本文将介绍如何使用Python中的NumPy和Jav...
    99+
    2023-09-26
    api numpy spring
  • PHP、Bash、大数据和编程算法:如何将它们融合在一起?
    随着信息技术的不断发展,计算机编程已经成为了我们日常生活和工作中必不可少的一部分。而随着编程技术的不断发展,各种编程语言和工具也不断涌现出来。今天,我们将讨论如何将PHP、Bash、大数据和编程算法融合在一起,以提高编程效率和数据处理能力...
    99+
    2023-06-19
    bash 大数据 编程算法
  • 互联网中什么软件可以把视频合并在一起
    小编给大家分享一下互联网中什么软件可以把视频合并在一起,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!推荐工具:迅捷视频转换器这是一款集多种转换功能于一体的音视频转...
    99+
    2023-06-29
  • ASP响应文件和Bash:如何将它们结合起来使用?
    ASP(Active Server Pages)是一种用于构建动态Web应用程序的服务器端脚本技术。Bash是一种在Linux和Unix操作系统中使用的命令行解释器。虽然它们看起来似乎没有什么共同点,但是在某些情况下,将它们结合起来使用可...
    99+
    2023-11-12
    响应 文件 bash
  • Python 和 Bash 一起使用,你知道可以做什么吗?
    Python 和 Bash 是两种非常流行的编程语言。Python 是一种高级语言,常用于数据分析、机器学习等领域,而 Bash 则是一种脚本语言,常用于自动化任务和系统管理。虽然 Python 和 Bash 在应用场景上有所不同,但是它...
    99+
    2023-10-01
    大数据 编程算法 bash
  • Python 和 load bash:如何轻松地结合使用?
    Python 和 Bash 都是非常流行的编程语言,它们在不同的场景下都有自己的优势。Python 通常用于数据分析、机器学习、Web 开发等领域,而 Bash 则是一种强大的命令行工具,可以帮助用户快速完成各种任务。在实际工作中,我们经常...
    99+
    2023-11-10
    响应 load bash
  • CSS怎么把两个类选择器链接在一起
    本篇内容介绍了“CSS怎么把两个类选择器链接在一起”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 通过把...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作