Python操作系统模块
Python OS模块提供了简单的功能,这些功能使我们可以进行交互并获取操作系统信息,甚至可以控制进程。
Python OS模块
OS模块提供的功能使我们可以执行基本的操作系统任务,而无论它是Windows平台,Macintosh还是Linux。
在本程序中,我们将回顾这些功能以及如何使用它们。
让我们从这些功能及其提供的信息开始我们的旅程。
Python导入操作系统
请注意,首先我们必须在程序中导入OS模块,然后才能执行其任何功能。
操作系统名称
该函数给出了它导入的OS模块的名称。
这取决于基础操作系统。
目前,它注册了" posix"," os2"," ce"," nt"," riscos"和" java"。
让我们在系统上执行此操作:
>>> print(os.name) posix
显然,这可以基于解释器输出不同的平台。
os.environ
"环境"不是一个函数,而是一个过程参数,通过它我们可以访问系统的环境变量。
让我们看一下示例代码片段:
import os output = os.environ['HOME'] print(output)
当我们运行此脚本时,将输出以下内容:
我们可以使用它来处理环境变量,更多内容请参见Python设置环境变量。
os.execvp
execvp函数是在系统上运行其他命令的方法之一。
让我们看看此功能的示例代码片段:
import os program = "python" arguments = ["hello.py"] print(os.execvp(program, (program,) + tuple(arguments)))
为此,我们使用以下代码创建了一个示例脚本" hello.py":
print('Hello')
当我们运行此脚本时,将输出以下内容:
os.getuid
众所周知,此os模块函数返回当前进程的用户ID或者UID。
>>> os.getuid() 501
因此,当前的shell进程ID为501。
os.rename
使用python os重命名功能,我们可以轻松地重命名文件。
import os fileDir = "theitroad.txt" os.rename(fd,'theitroad_Hi.txt')
请注意,为此,我们必须为脚本提供正确的权限。
操作系统
Python os系统功能允许我们在Python脚本中运行命令,就像在shell中运行该命令一样。
例如:
import os currentFiles = os.system("users > users.txt")
当我运行此脚本时,在同一目录中创建了一个新文件,名称为users.txt,内容字符串为" shubham",这也是由原始shell返回的:
请注意,这是一个非常强大的命令,应谨慎使用。
错误
Python os模块错误类是I/O相关错误的基类。
因此,我们可以使用except子句中的OSError捕获IO错误。
import os try: f = open('abc.txt', 'r') # file is missing except OSError: print('Error')
os.getpid
众所周知,此函数返回当前进程ID或者PID。
>>> os.getpid() 71622
因此,当前Shell进程的用户ID为71622。
os.listdir
此功能仅列出当前工作目录中存在的文件和目录。
>>> import os >>> os.listdir() ['.DS_Store', '.localized', 'theitroad', 'Java', 'Python']
它返回目录和文件名的可迭代列表。
os.uname
该函数返回信息,该信息标识执行该操作的当前操作系统。
>>> os.uname() posix.uname_result(sysname='Darwin', nodename='Shubham.local', release='17.2.0', version='Darwin Kernel Version 17.2.0: Fri Sep 29 18:27:05 PDT 2016; root:xnu-4570.20.62~3/RELEASE_X86_64', machine='x86_64')
这实际上是很详细的。
导入os.path vs导入os
os.path实际上工作异常。
看起来," os"与一个子模块" path"打包在一起,但是实际上," os"是一个普通的模块,可以与" sys.module"一起运行以支持" os.path"。
让我们列出幕后发生的事情:
当Python启动时,它将许多模块加载到sys.module中。
Python启动时也会加载
os
模块。
它将其路径分配给特定于OS的模块属性。它注入sys.modules ['os.path'] = path,以便您可以像导入子模块一样导入os.path。