Python 标准库之 os 模块

导读:本篇文章讲解 Python 标准库之 os 模块,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

目录

1、模块导入

2、系统相关

os.name

os.environ

3、文件和目录操作

os.getcwd()

os.listdir(path)

os.chdir(path)

os.path

os.mkdir(‘dirname’)

os.makedirs(‘dir1/dir2/…’)

os.rmdir(‘dirname’)

os.removedirs()

os.mknod(‘filename’)

os.stat(‘path/filename’)

os.rename(‘oldname’,’newname’)

os.remove(‘filename’)

4、执行命令

os.system(‘command’)

os.popen(‘command’, [mode, [bufsize]])

5、环境参数 

os.getlogin()

os.cpu_count()

os.urandom(n)


        Python 编程时,需要经常和文件、目录等打交道,这就离不了 os 模块。

        os,operating system 是也,顾名思义,该模块是 Python 标准库用于访问操作系统相关功能的模块,其提供了一种可移植的调用操作系统功能的方法。

        os 模块功能丰富,可通过 help 命令和 dir 命令了解其所有定义的常量和函数。

Python 标准库之 os 模块

        本文仅就部分常用命令予以总结,以便巩固。

 

1、模块导入

import os

 

2、系统相关

os.name

        当前操作系统。Windows 返回 ‘nt’,Linux 返回 ‘posix’。

>>> os.name
'posix'

 

os.environ

        当前系统环境变量

>>> os.environ
environ({'USER': 'probobo', 'LANGUAGE': 'zh_CN', 'XDG_SEAT': 'seat0', 'XDG_SESSION_TYPE': 'x11', 'XDG_CACHE_HOME': '/home/probobo/.cache', 'HOME': '/home/probobo', 'QT4_IM_MODULE': 'fcitx', 'DESKTOP_SESSION': 'deepin', 'GIO_LAUNCHED_DESKTOP_FILE': '/usr/share/applications/idle.desktop', 'XDG_SEAT_PATH': '/org/freedesktop/DisplayManager/Seat0', 'QT_DBL_CLICK_DIST': '15', 'QT_LINUX_ACCESSIBILITY_ALWAYS_ON': '1', 'DBUS_SESSION_BUS_ADDRESS': 'unix:path=/run/user/1000/bus', 'GIO_LAUNCHED_DESKTOP_FILE_PID': '18688', 'GNOME_KEYRING_CONTROL': '/home/probobo/.cache/keyring-IMU8H1', 'LOGNAME': 'probobo', 'GTK_IM_MODULE': 'fcitx', 'XDG_SESSION_CLASS': 'user', 'XDG_SESSION_ID': '2', 'GNOME_DESKTOP_SESSION_ID': 'this-is-deprecated', 'PATH': '/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/sbin:/usr/sbin', 'XDG_SESSION_PATH': '/org/freedesktop/DisplayManager/Session0', 'XDG_RUNTIME_DIR': '/run/user/1000', 'DISPLAY': ':0', 'LANG': 'zh_CN.UTF-8', 'XDG_CURRENT_DESKTOP': 'Deepin', 'DESKTOP_STARTUP_ID': 'startdde-2391-probobo-PC-idle-0_TIME20348950', 'XDG_SESSION_DESKTOP': 'deepin', 'XAUTHORITY': '/home/probobo/.Xauthority', 'XDG_DATA_HOME': '/home/probobo/.local/share', 'XDG_CONFIG_HOME': '/home/probobo/.config', 'XMODIFIERS': '@im=fcitx', 'XDG_GREETER_DATA_DIR': '/var/lib/lightdm/data/probobo', 'SSH_AUTH_SOCK': '/home/probobo/.cache/keyring-IMU8H1/ssh', 'SHELL': '/bin/bash', 'GDMSESSION': 'deepin', 'QT_ACCESSIBILITY': '1', 'QT_LOGGING_RULES': '*.debug=false', 'GPG_AGENT_INFO': '/run/user/1000/gnupg/S.gpg-agent:0:1', 'XDG_VTNR': '1', 'QT_IM_MODULE': 'fcitx', 'PWD': '/home/probobo', 'CLUTTER_IM_MODULE': 'fcitx'})

        获取某个具体的环境变量

>>> os.environ['HOME']
'/home/probobo'

 

3、文件和目录操作

os.getcwd()

        当前目录

>>> os.getcwd()
'/home/probobo'

 

os.listdir(path)

        当前或指定目录下所有的文件和目录,包括隐藏文件

>>> os.listdir()
['安卓应用文件', '.gtkrc-2.0', '.bashrc', '.Templates', '.bash_logout', 'Desktop', '.jupyter', '.imwheelrc', '.presage', '.dbus', '.tmp', '.dmrc', '.xsession-errors.old', '.icons', '.python_history', '.pki', '.Xauthority', 'os dir.txt', '.profile', 'Documents', '.clipboard-pix', '.themes', '.ipython', '.deepin-defender', '迅雷下载', '.xsession-errors', '.local', '.config', '.Public', 'Music', 'tmp.text', '.gnupg', '.java', '.cache', 'Downloads', 'Pictures', 'Videos', '.bash_history', '.idlerc']

 

os.chdir(path)

        改变当前目录

>>> os.chdir('Downloads')
>>> os.getcwd()
'/home/probobo/Downloads'

 

os.path

        获取文件属性,参见:Python 文件属性获取之 os.path 模块os.path模块(曾经)为获取文件属性的不二之选Python 标准库之 os 模块https://blog.csdn.net/iprobobo/article/details/123037709

 

os.mkdir(‘dirname’)

        创建单层目录

>>> os.mkdir('d')
>>> os.listdir('d')
[]

 

os.makedirs(‘dir1/dir2/…’)

        递归创建多层目录

>>> os.makedirs('d/d1')
>>> os.listdir('d')
['d1']

 

os.rmdir(‘dirname’)

        删除指定空目录,否则报错。

>>> os.rmdir('d')
Traceback (most recent call last):
  File "<pyshell#27>", line 1, in <module>
    os.rmdir('d')
OSError: [Errno 39] Directory not empty: 'd'

 

os.removedirs()

        递归删除指定空目录

>>> os.makedirs('d/d1/d2')
>>> os.chdir('d')
>>> os.listdir('d1/d2')
[]
>>> os.removedirs('d1/d2')
>>> os.listdir()
[]

 

os.mknod(‘filename’)

        创建一个指定文件名的文件系统节点(文件,设备特别文件或者命名pipe)

>>> os.mkdir('d')
>>> os.mknod('d/1.txt')

 

os.stat(‘path/filename’)

        获取文件/目录信息

>>> os.stat('d')
os.stat_result(st_mode=16877, st_ino=9568335, st_dev=2102, st_nlink=2, st_uid=1000, st_gid=1000, st_size=4096, st_atime=1645442489, st_mtime=1645442489, st_ctime=1645442489)

>>> os.stat('d/1.txt')
os.stat_result(st_mode=33152, st_ino=9568338, st_dev=2102, st_nlink=1, st_uid=1000, st_gid=1000, st_size=0, st_atime=1645442545, st_mtime=1645442535, st_ctime=1645442535)

 

os.rename(‘oldname’,’newname’)

        重命名文件/目录

>>> os.rename('d/1.txt','d/2.txt')
>>> os.stat('d/1.txt')
Traceback (most recent call last):
  File "<pyshell#14>", line 1, in <module>
    os.stat('d/1.txt')
FileNotFoundError: [Errno 2] No such file or directory: 'd/1.txt'
>>> os.stat('d/2.txt')
os.stat_result(st_mode=33152, st_ino=9568338, st_dev=2102, st_nlink=1, st_uid=1000, st_gid=1000, st_size=0, st_atime=1645442545, st_mtime=1645442535, st_ctime=1645443298)

 

os.remove(‘filename’)

        删除指定文件

>>> os.remove('d/2.txt')
>>> os.stat('d/2.txt')
Traceback (most recent call last):
  File "<pyshell#16>", line 1, in <module>
    os.stat('d/2.txt')
FileNotFoundError: [Errno 2] No such file or directory: 'd/2.txt'

 

4、执行命令

        os 模块中用以执行操作系统命令的模块有 system()  popen() ,但近年有被 subprocess 模块取代的趋势。

os.system(‘command’)

        运行操作系统命令,返回0或-1。

>>> os.system('idle')
0

 

os.popen(‘command’, [mode, [bufsize]])

        开启一个子进程执行 command 参数指定的命令,在父进程和子进程之间建立一个管道 pipe,用于在父子进程间通信。返回文件对象。

>>> os.popen('ifconfig')
<os._wrap_close object at 0x7f784a71d0>
>>> os.popen('ifconfig').read()
'enp1s0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500\n        ether 74:45:2d:d8:03:50  txqueuelen 1000  (Ethernet)\n        RX packets 0  bytes 0 (0.0 B)\n        RX errors 0  dropped 0  overruns 0  frame 0\n        TX packets 0  bytes 0 (0.0 B)\n        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0\n        device interrupt 88  base 0xd000  \n\nlo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536\n        inet 127.0.0.1  netmask 255.0.0.0\n        inet6 ::1  prefixlen 128  scopeid 0x10<host>\n        loop  txqueuelen 1000  (Local Loopback)\n        RX packets 1373  bytes 161408 (157.6 KiB)\n        RX errors 0  dropped 0  overruns 0  frame 0\n        TX packets 1373  bytes 161408 (157.6 KiB)\n        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0\n\nwlan0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500\n        inet 192.168.2.14  netmask 255.255.255.0  broadcast 192.168.2.255\n        inet6 fe80::2dc9:f667:a7e0:bc1f  prefixlen 64  scopeid 0x20<link>\n        ether 74:45:2d:d8:0e:a7  txqueuelen 1000  (Ethernet)\n        RX packets 164514  bytes 206462256 (196.8 MiB)\n        RX errors 0  dropped 0  overruns 0  frame 0\n        TX packets 62657  bytes 9214815 (8.7 MiB)\n        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0\n\n'

 

5、环境参数 

函数 描述

os.getlogin()

获取当前登录用户名

os.cpu_count()

获取当前系统CPU数量

os.urandom(n)

获得 n 个字节长度的随机字符串,常用于加解密运算

>>> os.urandom(10)
b’\x9eSn\x1d\x9b_\x05\x97\x1bc’

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/106946.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!