当前位置:网站首页 > 更多 > 玩电脑 > 正文

[玩转系统] PowerShell 与 Python:一场永恒的战争

作者:精品下载站 日期:2024-12-14 20:52:44 浏览:11 分类:玩电脑

PowerShell 与 Python:一场永恒的战争


最好的编程语言是什么?当询问十个不同的开发人员时,你可能会得到十个不同的答案。在本文中,我们将比较两种语言; PowerShell 和 Python。您将大致了解每种语言,并了解它们如何在语法、跨平台可用性等功能上进行比较和对比。

是时候来一场 PowerShell 与 Python 的较量了!

读完本文后,您将能够回答一些常见问题:

  • 这两种语言有什么共同点?
  • 是什么让他们与众不同?
  • 它们各自的最佳用例是什么?
  • 语法有何不同?
  • 一个人必须扮演什么样的角色才能最好地利用其中一个角色?

本文适合那些对这两种语言知之甚少甚至一无所知,并且对是否使用 PowerShell 还是 Python 感到困惑的人。本文也适合那些已经了解其中一种语言并想了解另一种语言的人。

让我们深入了解一下!

按工作角色

尽管您可能可以整天谈论 Python 和 PowerShell 的技术方面,但比较这两种语言的一个重要部分是确定哪种工作角色最适合这两种语言。

PowerShell 和 Python 都是在栅栏的两侧(微软和开源 Linux 社区)开发的。两种语言的语法、社区以及因此的整体感觉都不同,因此通常适用于某些工作角色

这里需要注意的是,PowerShell(Core)在6.0.0及更高版本中已经开源。时代在变。

系统管理员

PowerShell 和 Python 都是系统管理员值得学习的优秀语言。它们都是很棒的自动化工具,并且可以为系统管理员节省大量时间。但可以说,对于 Windows 系统管理员来说,PowerShell 将是更好的选择,因为它与本机 .NET 框架集成。

另一方面,Python 非常适合 Linux 系统管理员。

尽管 Python 和 PowerShell(核心)都是跨平台的,但您会发现绝大多数工作角色将在 Windows 和 PowerShell、Python 和 Linux 之间划分。

开发商

对于更多面向开发人员的工作,Python 是迄今为止的领导者。 Python 在 PowerShell 从未涉足的领域拥有大量支持,例如数据科学、统计分析等。有时,Python 感觉更像是一种面向科学的语言。

Python 还运行许多大型服务器端 Web 应用程序和其他“开发人员友好”的应用程序。

尽管 PowerShell可以用作开发语言,但它通常更适合需要更多自动化的工作角色,例如 DevOps 或一般系统管理自动化。

按操作系统

电源外壳

PowerShell 是 Windows 环境的英雄;这是您在 Windows 中自动化任务时可以利用的最佳技能。对于本地和 Office 365 品种的 Active Directory 和 Microsoft Exchange 等产品尤其如此。

由于 PowerShell 可以直接访问 .NET Framework,因此它与所有 Windows 系统完美集成,并且可以轻松用于完成任何任务。

然而,PowerShell 确实支持 Linux,但截至撰写本文时,它还不像 Python 那样流行。

Python

一般来说,Python 在 Linux 环境中表现更好。由于它深深扎根于 Linux 社区,您会发现 Python 模块几乎可以在 Linux 中执行任何操作。

Python 还可以在其他平台上运行,例如 iOS 和 AIX。

按任务

电源外壳

您可以使用 PowerShell 创建用于管理日常任务的工具,甚至可以使用 Windows PowerShell 创建 GUI,使您的工具更加用户友好。

Python

Python 通常最适合用于“较重”的任务,例如机器学习、统计、数据科学以及服务器端 Web 和桌面应用程序。 Python 对图像处理也有很好的支持。

了解语法的共性和差异

让我们深入了解每种语言的具体细节,对它们进行比较和对比。

PowerShell 和 Python 是面向对象的,这意味着两者都建立在逻辑对象的概念之上,它们创建、操作和重用对象来执行特定任务。

PowerShell 和 Python 都通过模块的方式重用代码。模块稍后可以在其他程序中重用,或者您可以直接导入其他程序员创建的模块。

这两种语言都有一个大型模块库,您可以在脚本中轻松使用它们。

PowerShell 是基于任务的命令行 shell 和脚本语言,构建在 .NET 框架之上,它接受并返回 .NET 框架对象,而 Python 是一种解释性编程语言

Python 解释器采用人类可读的代码并创建解释器可以理解的另一种形式的代码,稍后在实际执行时将其更改为机器可读的代码。

现在让我们从这两种语言的基础知识开始,例如注释、声明变量、条件和其他基础知识,以更好地了解它们的异同。

评论

在 PowerShell 或 Python 中进行单行注释是相同的 - 在行开头使用井号 (#),如下所示。

# This is a powerShell comment and will not be executed
# This is a Python comment and will not be executed.

声明变量

PowerShell 中的所有变量均以 $ 开头,后跟名称。下面您可以看到如何分配变量来保存整数。

$var = 1

在 PowerShell 中定义字符串变量的工作方式相同,但您需要将值括在单引号或双引号中。

$var2="string"
$var3='string'

查看 about_Variables 文档以获取有关 PowerShell 变量的更多信息。

在 Python 中,变量的处理方式几乎相同,但不要求变量以 $ 开头。

var1 = 7
var2 = "string"
var3 = 'string'

您可以通过 W3Schools 其他许多其他在线资源了解有关 Python 变量的更多信息。

使用数学运算

在 PowerShell 和 Python 中,任何不带小数的正数或负数都是整数。默认情况下,它们将被自动分配给整数类型的变量。可以对这些变量正常执行数学运算。

在 PowerShell 中,您可以在下面看到一些基本数学运算的示例。

$int1 = 70
$int2 = 77
$int3 = -10
$int1 + $int2
$int2 - $int1
$int1 + $Int3

[玩转系统] PowerShell 与 Python:一场永恒的战争

查看 RedmondMag 上的如何在 PowerShell 中做数学系列了解更多信息。

同样,在 Python 中,您可以执行基本的数学运算,如下所示。

int1 = 70
int2 = 77
int3 = -10
int1 + int2
int2 - int1
int1 + int3

[玩转系统] PowerShell 与 Python:一场永恒的战争

阅读这篇有用的 geeks2geeks.com 文章,了解有关 Python 中数学运算的更多信息。

使用条件语句

条件语句对于任何编程语言都很重要。条件语句允许开发人员根据一个或多个条件重定向代码流。当您了解 if/then 结构等条件语句时,您会发现 PowerShell 和 Python 几乎相同。

您可以在下面看到这两种语言之间存在细微但非常重要的差异。 PowerShell 严重依赖括号 ( )、大括号 { } 和其他特殊字符,但 Python 使用缩进。

请注意下面 PowerShell 示例中的所有括号和大括号。

if (Condition) {
    Code to be executed if the condition is true
} else {
    Other code to be executed if the condition is false
}

将 PowerShell 代码与下面的 Python 代码进行对比。您只会看到冒号表示条件语句的结尾,以及空格表示要在其中执行的代码。

if condition:
    Code to be executed if the condition is true
else:
    Other code to be executed if the condition is false

为了进行演示,让我们看看典型的 PowerShell if/then 语句的外观和行为。运行以下代码时,您将看到输出 77 大于 70

$var1 = 77
$var2 = 70
if ($var1 -gt $var2) {
    Write-Host -Object "$var1 is greater than $var2"
} else {
    Write-host -Object "$var1 is less than $var2"
}

相反,请注意 Python 中如何执行相同的任务。有很多差异,包括不同的运算符和将文本输出到控制台的命令。

if var1 > var2:
    print(f"{var1} is greater than {var2}")
else:
    print(f"{var1} is less than {var2}")

循环播放

编程语言中的另一个重要概念是循环。循环允许语言不断重复或迭代一段代码,直到满足条件或达到一定次数。

在 PowerShell 中,常见的 foreach 语句如下所示。

foreach ($item in $list) {
	Code to be executed for each item
}

在 Python 中,执行相同任务的类似循环将使用 for 循环,如下所示。

for item in list:
	Code to be executed for each item

PowerShell 和 Python 使用的语法有很多相似之处,特别是在语言的基础知识和核心使用方面。这些相似之处对于任何掌握 PowerShell 并想要了解更多 Python 的人来说都是一个巨大的优势,反之亦然。

以不同的方式解决同一问题

现在让我们展示如何使用 PowerShell 和 Python 以稍微不同的方式解决常见问题。为此,我们将读取一个包含行分隔数字的简单文本文件,并且仅将特定范围的数字返回到控制台。

我们将使用的文件名为 input_text.txt,行分隔数字包含从 1 到 6345 的各种数字。

我们将在 PowerShell 和 Python 中创建一个函数来处理从文件返回的所有数字。

使用 PowerShell 处理文件

下面您将看到如何在 PowerShell 中实现这一点。

Define a function called Get-TwoDigits
 function Get-TwoDigits {
     [CmdletBinding()]
     param(
         [Parameter()]
         $List ## Provide an input parameter called List representing numbers
     )
     ## Loop over each number in List. If the number is greater than 9 and less
     ## then 99, return that number to the conosle
     foreach($num in $List){
         if($num -gt 9 -and $num -le 99 ){
             Write-Host $num
         }
 }
 }
 Read the text file and place contents into an array called inputlist
 PS51> $inputlist = Get-Content -Path .\input_text.txt
 Call the function providing the contents of the file as the List parameter
 PS51> Get-TwoDigits -List $inputlist

当您运行 Get-TwoDigits 时,您将看到 PowerShell 将仅返回 input_text.txt 中 9 到 99 之间的任何数字。

使用 Python 处理文件

现在,我们将使用 Python 执行完全相同的步骤,以注意语法差异。

## Open the file handle using the open() method
File_Read = open("/PS_Vs._PY/input_text.txt")

## Read the file and split the large string up into an array with the splitlines() method
inputData = (File_Read.read().splitlines())

## Close the open file handle
File_Read.close()

## Define a function called two_digits with a single parameter called input_list
def two_digits (input_list):
    ## Loop over each number in List. If the number is greater than 9 and less
    ## then 99, return that number to the conosle
    for num in input_list:
        if (int(num) > 9) and (int(num) <= 99):
            print(num)


>>> two_digits(inputData)

当您运行 two_digits() 函数时,您将看到 Python 将仅返回 input_text.txt 中 9 到 99 之间的任何数字。

在 Python 中创建函数几乎是相同的结构。请记住,缩进在 Python 中至关重要,区分大小写也很重要。

进一步阅读

  • Prateek Singh 的 PowerShell Python 指南

您需要 登录账户 后才能发表评论

取消回复欢迎 发表评论:

关灯