python之os模块

1. python的OS模块介绍

Python的os模块提供了与操作系统交互的功能,可以让我们调用操作系统的接口函数。它提供了一些基本的系统操作,如文件和目录的操作等,可以让我们轻松地进行系统相关的工作。

  1. 文件和目录操作:os模块提供了许多方法来操作文件,比如创建、删除、重命名、复制等。还可以获取文件信息,比如大小、创建时间、修改时间等。
  2. 环境变量:os模块可以获取和设置系统的环境变量,比如PATH、PYTHONPATH等。
  3. 进程管理:os模块提供了一些操作进程的方法,比如启动新进程、杀死进程等。
  4. 用户登录信息:os模块提供了获取当前登录用户的信息的方法,比如用户名、用户ID等。
  5. 时间和日期:os模块还提供了获取和设置系统时间和日期的方法。

2. 文件和目录操作操作的相关方法

2.1 os.remove(path):删除指定的文件

import os

os.remove('test.txt') #删除名为test.txt的文件

2.2 os.rename(src, dst):重命名或移动指定的文件或目录

import os

os.rename('oldfile.txt', 'newfile.txt') #将名为oldfile.txt的文件重命名为newfile.txt

2.3 os.mkdir(path[, mode]):创建新目录

import os
os.mkdir('newdir') #创建名为newdir的新目录

2.4 os.mkdirs(name[, mode]):创建多级目录

import os
os.makedirs('/path/to/newdir') #创建多级目录

2.5 os.rmdir(path):删除指定目录

import os
os.rmdir('dirname') #删除名为dirname的目录

2.6 os.listdir(path):返回指定目录下的所有文件和目录的名称

import os
dirlist = os.listdir('/path/of/dir')
for filename in dirlist:
    print(filename)

2.7 os.getcwd():返回当前工作目录

import os
print(os.getcwd()) #输出当前工作目录

2.8 os.chdir(path):改变当前工作目录

import os
os.chdir('/path/to/new/dir') #将当前工作目录改为新的目录

2.9 os.path.isfile(path):判断指定路径是否为一个文件

import os
print(os.path.isfile('/path/to/file')) #输出True(文件存在)或False(文件不存在)

2.10 os.path.isdir(path):判断指定路径是否为一个目录

import os
print(os.path.isdir('/path/to/dir')) #输出True(目录存在)或False(目录不存在)

2.11 os.path.exists(path):判断指定路径是否存在

import os
print(os.path.exists('/path/to/dir_or_file')) #输出True(目录或文件存在)或False(目录或文件不存在)

2.12 os.stat(path)获取指定路径的文件或目录的状态信息

该方法可以获取指定路径的文件或目录的状态信息,包括文件大小、访问时间、修改时间等。

import os

#获取文件状态信息
info = os.stat('/etc/passwd')
print(info.st_size) #获取文件大小
print(info.st_atime) #获取文件访问时间
print(info.st_mtime) #获取文件修改时间

3.OS模块关于环境变量的相关方法

在Python中,通过os模块可以获取和设置系统环境变量相关的操作。下面介绍常用的环境变量方法

3.1 os.getenv(key[, default])

该方法用于获取指定环境变量的值,如果不存在该变量,则返回默认值:

import os
path = os.getenv('PATH', '/usr/local/bin')
print(path)

3.2 os.putenv(key, value)

该方法用于将指定环境变量设置为指定的值

import os
os.putenv('MY_VAR', 'my_value')

3.3 os.environ

该方法用于获取系统的全部环境变量,返回一个dict(字典)。可以使用os.environ.get(key[, default])或os.environ[key]获取指定环境变量的值

import os
environ = os.environ
print(environ.get('PATH'))
print(environ['HOME'])

3.4 os.path.expandvars(s)

该方法用于根据环境变量的值扩展字符串,返回扩展后的字符串

import os
expanded = os.path.expandvars('$HOME/bin:${PATH}')
print(expanded)

注:

  • 通过os.getenv()获取指定环境变量的值,如果没有指定环境变量,默认返回None,可以使用第二个参数设置默认值。

  • 通过os.putenv()方法来设置指定环境变量的值。

  • os.environ获取系统全部环境变量,并以dict(字典)的方式返回,可以使用[]或get()方法来获取指定环境变量的值。

  • os.path.expandvars()方法用于根据环境变量的值扩展字符串,并返回扩展后的字符串。

4. OS模块关于进程管理的相关方法

在 Python 的OS模块中,提供了一些方法来管理进程,比如启动、管理、等待进程,以及获取进程信息等。下面是一些主要的进程管理方法

4.1 os.system(command)

该方法是最简单的启动外部进程的方式,该方法只是在当前的进程上启动了一个shell,并在shell中执行command命令,并可以在结果输出到标准输出后返回

import os
os.system('ping www.baidu.com') #在当前进程上启动一个shell,执行ping命令

4.2 os.popen(command[, mode[, bufsize]])

该方法也可以启动外部进程,并执行command命令,不过它返回一个文件对象,可以通过该文件对象的read()和readlines()方法来获取进程输出。mode和bufsize参数和内置函数open()中的参数有相同的含义。

import os
f = os.popen('ls -l')
print(f.read())

4.3 os.spawnvp(mode, path, args)

该方法可以启动一个新的进程,在新的进程中执行指定程序,path参数表示需要执行的程序的完整路径或可执行文件名(当path为可执行文件名时,会在系统环境变量PATH中查找该文件),args参数是一个序列,表示程序需要的参数列表。

import os
os.spawnvp(os.P_WAIT, '/bin/ls', ['ls', '-l'])

4.4 os.kill(pid, sig)

该方法用于向指定的进程发送信号,pid参数是进程ID,sig参数是信号编号。常见的信号编号包括SIGTERM(15)、SIGKILL(9)等。

import os
os.kill(pid, signal.SIGTERM)

4.5 os.wait() 或 os.waitpid(pid, options)

该方法用于等待指定的子进程结束,如果子进程已经结束,则立即返回。pid参数默认为-1,表示等待任意一个子进程退出;options参数为0时表示阻塞进程,等待子进程退出;为os.WNOHANG时表示不阻塞进程,立即返回一个元组(pid,status),status为进程退出时的状态值。如果等待多个子进程退出,则要多次调用该方法

import os
pid, status = os.wait() #阻塞进程,等待任意一个子进程退出
pid, status = os.waitpid(pid, os.WNOHANG) #不阻塞,立即返回

5. OS模块关于用户登录信息的相关方法

在Python的OS模块中,可以获取当前用户的登录信息以及其他用户的密码文件信息。下面是常用的用户登录信息方法

5.1 os.getlogin()

该方法用于获取当前登录用户的用户名,如果无法获取,则返回None

import os
print(os.getlogin()) #获取当前登录的用户名

5.2 os.getuid()和os.getgid()

这两个方法分别用于获取当前用户的UID和GID(用户ID和组ID)

import os
print(os.getuid()) #获取当前用户的UID
print(os.getgid()) #获取当前用户的GID

5.3 pwd模块

这个模块可以获取到指定用户的密码文件信息,例如用户名、UID、GID、home目录、shell等

import pwd

#获取指定用户的密码文件信息
user = pwd.getpwnam('root')
print(user.pw_uid) #获取root用户的UID
print(user.pw_gid) #获取root用户所在的组ID
print(user.pw_dir) #获取root用户的home目录
posted @ 2021-11-24 00:59  我不知道取什么名字好  阅读(71)  评论(0编辑  收藏  举报