Python中执行系统命令常见的几种方法

Python07

Python中执行系统命令常见的几种方法,第1张

作为胶水语言,Python可以很方便地执行系统命令,从而帮助我们快速的完成任务而且Python执行系统命令可采用的方法有很多,本文重点介绍一下:os.system()、os.popen()和subprocess模块。

1. os.system()

这个方法直接调用标准C的system()函数,仅仅在一个子终端运行系统命令,而不能获取执行返回的信息。

>>>import os

>>>output = os.system('cat /proc/cpuinfo')

processor : 0

vendor_id : AuthenticAMD

cpu family : 21

... ...

>>>output # doesn't capture output

0

2. os.popen()

这个方法执行命令并返回执行后的信息对象,是通过一个管道文件将结果返回。

>>>output = os.popen('cat /proc/cpuinfo')

>>>output

>>>print output.read()

processor : 0

vendor_id : AuthenticAMD

cpu family : 21

... ...

>>>

3. subprocess模块

该模块是一个功能强大的子进程管理模块,是替换os.system, os.spawn*等方法的一个模块。

>>>import subprocess

>>>subprocess.Popen(["ls", "-l"]) # python2.x doesn't capture

output

>>>subprocess.run(["ls", "-l"]) # python3.x doesn't capture

output

>>>total 68

drwxrwxr-x 3 xl xl 4096 Feb 8 05:00 com

drwxr-xr-x 2 xl xl 4096 Jan 21 02:58 Desktop

drwxr-xr-x 2 xl xl 4096 Jan 21 02:58 Documents

drwxr-xr-x 2 xl xl 4096 Jan 21 07:44 Downloads

... ...

>>>

print命令用来输出指定对象的内容,语法为:

print(对象1[,对象2,…...sep=分隔符,end=终止符])

1.对象1,对象2,......:print命令可以一次打印多个对象数据,对象之间以逗号“,”分开。

2.sep:分隔符号,如果要输入的多个对象间需要用指定的符号进行分隔,则可通过此参数进行设置,默认值为一个空格符(“ ”)。

3.end:终止符,输入完毕后自动添加的字符,默认值为换行符(“ ”),所以下一次执行print命令会输出在下一行。

print命令支持参数格式化功能,即使用"%s"代表字符串,"%d"代表整数,"%f"代表浮点数,其语法格式为:

print(对象 %(参数行))

例如:

参数格式化可以精确控制输出位置,让输出的数据整齐排列,例如:

1.%5d:固定输出为5个数字的宽度,若输出少于5位,则会在数字的左边输入空格符(若数值大于5位,则会全部输出)

2.%5s:固定输出为5个字符的宽度,若输出少于5位,则会在字符串的左边输入空格符(若数值大于5位,则会全部输出)

3.%8 .2f :固定输出8 个字符宽度(含小数点),其中小数点输出为2 位。若整数部分少于5 位( 8 - 3=5 ),会在左边填入空格符;若小数少于2 位,会在右方填入“ 0"

例如:用格式化输出的方法输出23.8:

也可使用字符串的format 方法来做格式化,用一对大括号“{}”表示参数位置,语法为:

print (字符串.format (参数行))

例如,用字符串的format 方法输出下列字符串及整数:

文章结尾附上Python3.9.7文档中print命令的内容

print(*objects, sep=' ', end=' ', file=sys.stdout, flush=False)

将 objects 打印到 file 指定的文本流,以sep 分隔并在末尾加上 end。 sep, end, file 和 flush 如果存在,它们必须以关键字参数的形式给出。

所有非关键字参数都会被转换为字符串,就像是执行了 str() 一样,并会被写入到信息流,以 sep 且在末尾加上 end。 sep 和 end 都必须为字符串;它们也可以为 None,这意味着使用默认值。 如果没有给出 objects,则print() 将只写入 end。

file 参数必须是一个具有 write(string) 方法的对象;如果参数不存在或为 None,则将使用 sys.stdout。 由于要打印的参数会被转换为文本字符串,因此 print() 不能用于二进制模式的文件对象。 对于这些对象,应该改用 file.write(...)。

输出是否被缓存通常决定于 file,但如果 flush 关键字参数为真值,信息流会被强制刷新。

在 3.3 版更改: 增加了 flush 关键字参数。

python包含数据包命令如下。

easy_insert包名。

其中python有多种数据包以下为常用数据包,Numpy提供了两种基本的对象:ndarray和ufunc。ndarray是存储单一数据类型的多维数组,而ufunc是能够对数组进行处理的函数。N维数组,一种快速、高效使用内存的多维数组,他提供矢量化数学运算。可以不需要使用循环,就能对整个数组内的数据进行标准数学运算。非常便于传送数据到用低级语言编写(C\C++)的外部库,也便于外部库以Numpy数组形式返回数据。Numpy不提供高级数据分析功能,但可以更加深刻的理解Numpy数组和面向数组的计算,可以进行:数组的算数和逻辑运算。傅立叶变换和用于图形操作的例程。与线性代数有关的操作。NumPy拥有线性代数和随机数生成的内置函数。2,Scipy是一款方便、易于使用、专门为科学和工程设计的Python包,它包括统计、优化、整合、线性代数模块、傅里叶变换、信号和图像处理、常微分方程求解器等。Scipy依赖于Numpy,并提供许多对用户友好的和有效的数值例程,如数值积分和优化。3、PPandas是Python的一个数据分析包,Pandas最初被用作金融数据分析工具而开发出来,因此Pandas为时间序列分析提供了很好的支持。Pandas是为了解决数据分析任务而创建的,Pandas纳入了大量的库和一些标准的数据模型,提供了高效的操作大型数据集所需要的工具。Pandas提供了大量是我们快速便捷的处理数据的函数和方法。Pandas包含了高级数据结构,以及让数据分析变得快速、简单的工具。它建立在Numpy之上,使得Numpy应用变得简单。