目录
os.rename(‘oldname’,’newname’)
os.popen(‘command’, [mode, [bufsize]])
Python 编程时,需要经常和文件、目录等打交道,这就离不了 os 模块。
os,operating system 是也,顾名思义,该模块是 Python 标准库用于访问操作系统相关功能的模块,其提供了一种可移植的调用操作系统功能的方法。
os 模块功能丰富,可通过 help 命令和 dir 命令了解其所有定义的常量和函数。
本文仅就部分常用命令予以总结,以便巩固。
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
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) |
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/106946.html