[Python学习日记-47] Python 中的系统调用模块—— os 与 sys

[Python学习日记-47] Python 中的系统调用模块

简介

os

sys

简介

os 模块和 sys 模块提供了很多允许你的程序与操作系统直接交互的功能。下面将进行逐一介绍。

os

一、os.getcwd()

得到当前工作目录,即当前 Python 脚本工作的目录路径(绝对路径),代码如下

python 复制代码
import os

print(os.getcwd())

代码输出如下:

二、os.listdir()

返回指定目录下的所有文件和目录名,代码如下

python 复制代码
import os

print(os.listdir("C:\\Users\\Administrator\\Desktop\\jove_test_module"))

代码输出如下:

三、os.remove()

该函致用来删除一个文件,删除当前目录下的文件可以直接写文件名,如果要删除其他目录下的文件请用绝对路径

python 复制代码
import os

os.remove("file_name")    # 删除当前目录下的文件,如果要删除其他目录下的文件请用绝对路径

四、os.removedirs()

该函数可以删除目录

python 复制代码
import os

os.removedirs("C:\\Users\\Administrator\\Desktop\\remove_dir")

注意:如果目标目录不为空则会抛出 OSError 错误,多层目录也会抛出该错误,即只能删除一个空的目录。

五、os.path.isfile()

检验给出的路径是否是一个文件

python 复制代码
import os

print(os.path.isfile("C:\\Users\\Administrator\\Desktop\\is_dir"))
print(os.path.isfile("C:\\Users\\Administrator\\Desktop\\is_file"))

代码输出如下:

六、os.path.isdir()

检验给出的路径是否是一个目录

python 复制代码
import os

print(os.path.isdir("C:\\Users\\Administrator\\Desktop\\is_dir"))
print(os.path.isdir("C:\\Users\\Administrator\\Desktop\\is_file"))

代码输出如下:

七、os.path.isabs()

判断是否是绝对路径

python 复制代码
import os

print(os.path.isabs("C:\\Users\\Administrator\\Desktop\\is_dir"))
print(os.path.isabs(".\\is_dir"))

代码输出如下:

八、os.path.exists()

检验给出的路径是否真实存在

python 复制代码
import os

print(os.path.exists("C:\\Users\\Administrator\\Desktop\\is_dir"))
print(os.path.exists("C:\\Users\\Administrator\\Desktop\\not_this_dir"))

代码输出如下:

九、os.path.split()

返回一个路径的目录名和文件名

python 复制代码
import os

print(os.path.split("C:\\Users\\Administrator\\Desktop\\is_dir"))

代码输出如下:

十、os.path.splitext()

分离扩展名(后缀),将会返回一个包含路径的文件名和文件的扩展名

python 复制代码
import os

print(os.path.splitext("C:\\Users\\Administrator\\Desktop\\is_file.py"))

代码输出如下:

十一、os.path.dirname()

获取路径名

python 复制代码
import os

print(os.path.dirname("C:\\Users\\Administrator\\Desktop\\is_file.py"))

代码输出如下:

十二、os.path.abspath()

获取绝对路径

python 复制代码
import os

print(os.path.abspath("test.py"))

代码输出如下:

十三、os.path.basename()

获取文件名

python 复制代码
import os

print(os.path.basename("C:\\Users\\Administrator\\Desktop\\is_file.py"))

代码输出如下:

十四、os.system()

远行 shell 命令

python 复制代码
import os

print(os.system("dir"))

代码输出如下:

注意:需要区分当前系统是 Windows 还是 Linux,两个系统之间会有 shell 的差异。

十五、os.getenv()

读取操作系统环境变量 Path 的值

python 复制代码
import os

print(os.getenv("Path"))

代码输出如下:

即输出这里的值

注意:环境变量的读取也需要区分系统,Windows 和 Linux 之间的环境变量是不同的

十六、os.environ

返回操作系统所有的环境变量

python 复制代码
import os

print(os.environ)

代码输出如下:

十七、os.environ,setdefault()

设置系统环境变量,仅程序运行时有效

python 复制代码
import os

os.environ,setdefault("HOME","/home/jove")

代码效果:程序运行期间将家目录变更为 /home/jove

十八、os.linesep()

给出当前平台使用的行终止符

python 复制代码
import os

print(os.linesep())

代码输出如下:

注意:Windows 使用 '\r\n',Linux 和 MAC 使用 '\n'

十九、os.name()

指示你正在使用的平台

python 复制代码
import os

print(os.name)

代码传输如下:

不同系统显示如下:

系统
Windows nt
Linux posix
macOS/Unix posix
其它系统 具体值需要看具体系统

二十、os.rename()

重命名,但不会覆盖已存在的同名文件

python 复制代码
import os

print(os.rename("old_file_name","new_file_name"))

二十一、os.replace()

重命名,但会覆盖已存在的同名文件

python 复制代码
import os

print(os.replace("old_file_name","new_file_name"))

二十二、os.makedirs()

创建多级目录

python 复制代码
import os

os.makedirs("C:\\Users\\Administrator\\Desktop\\makedir1\\makedir2\\makedir3\\file.py")

代码效果如下:

注意:只能创建目录,不能创建文件

二十三、os.mkdir()

创建单个目录

python 复制代码
import os

os.mkdir(r"C:\Users\Administrator\Desktop\makedir1\makedir11")

代码效果如下:

二十四、os.stat()

获股文件属性

python 复制代码
import os

print(os.stat(r"C:\Users\Administrator\Desktop\jove_test_module\setup.py"))

代码输出如下:

os.stat_result(st_mode=33206, st_ino=7036874418158520, st_dev=11972334884292589113, st_nlink=1, st_uid=0, st_gid=0, st_size=453, st_atime=1728873392, st_mtime=1728744251, st_ctime=1728873392)

二十五、os.chmod()

修改文件权限与时间戳

python 复制代码
import os

os.chmod(r"C:\Users\Administrator\Desktop\jove_test_module\setup.py",0o400)

代码效果如下:

常见的权限模式如下:

模式 权限
0o400 只读权限
0o600 读写权限
0o700 读写执行权限
0o755 所有者具有读写执行权限,其他用户只有读执行权限

二十六、os.path.getsize()

获取文件大小,以字节的形式输出

python 复制代码
import os

print(os.path.getsize(r"C:\Users\Administrator\Desktop\jove_test_module\setup.py"))

代码输出如下:

二十七、os.path.join()

结合目录名与文件名

python 复制代码
import os

print(os.path.join(r"C:\Users\Administrator\Desktop\jove_test_module","setup.py"))

代码输出如下:

二十八、os.chdir()

改变工作目录到指定目录中

python 复制代码
import os

print(os.getcwd())
os.chdir(r"C:\Users\Administrator\Desktop\jove_test_module")
print(os.getcwd())

代码输出如下:

二十九、os.get_terminal_size()

获取当前终端的分辨率

python 复制代码
import os

print(os.get_terminal_size())

代码输出如下:

三十、os.kill()

杀死指定进程,用 PID 来指定,与 Linux 当中的 kill 命令差不多

python 复制代码
import os
import signal

os.kill(2060,signal.SIGKILL)    # pid(要发送信号的进程的PID(进程ID)),signal(要发送的信号)

常见信号如下:

信号 说明
signal.SIGTERM 终止进程
signal.SIGKILL/signal.SIGILL 强制终止进程
signal.SIGINT 跟按下 Ctrl+C 相同的效果

sys

一、sys.argv

命令行参数列表,第一个元素是程序本身路径,后面就是执行时后面跟的参数

python 复制代码
import sys

print(sys.argv)

代码输出如下:

二、sys.exit()

于终止当前程序的执行,使用方式有两种:

  • 不带参数:直接调用 exit() 函数会立即终止程序的执行,并返回到调用程序的环境中。相当于在程序中遇到了终止语句。
python 复制代码
import sys

print("Before exit")
sys.exit()
print("After exit")  # 这行代码不会被执行

代码输出如下:

  • 带一个整数参数:传递一个整数给 exit() 函数,可以返回一个特定的退出代码给调用程序的环境。0表示程序正常终止,非零值表示出现了错误或异常终止。
python 复制代码
import sys

print("Before exit")
sys.exit(1)
print("After exit")  # 这行代码不会被执行

代码输出如下:

三、sys.version

获取 Python 解释程序的版本信息

python 复制代码
import sys

print(sys.version)

代码输出如下:

四、sys.maxsize

输出最大的 int 值,在 Python2 中使用的是 maxint,而在 Python3 中 maxint 被废除了,被 maxsize 代替了

python 复制代码
import sys

print(sys.maxsize)

代码输出如下:

五、sys.path

返回模块的搜索路径,初始化时使用 PYTHONPATH 环境变量的值

python 复制代码
import sys

print(sys.path)

代码输出如下:

六、sys.platform

返回操作系统平台名称

python 复制代码
import sys

print(sys.platform)

代码输出如下:

常见的 sys.platform 值包括:

  • win32:表示 Windows 操作系统
  • darwin:表示 macOS 操作系统
  • linux:表示 Linux 操作系统
  • cygwin:表示在 Cygwin 环境下的 Windows 系统
  • 其他特定平台的标识符

七、sys.stdout.write()

标准输出流上写入字符的方法。它接受一个字符串作为参数,并将其写入到标准输出流中,而不会像 print() 函数一样自动添加换行符。

python 复制代码
import sys

sys.stdout.write("Please:")

代码输出如下:

相比于 print() 函数,sys.stdout.write() 的优势在于可以实现对输出内容的更精确控制,例如在一行中多次写入而不换行,或者控制输出位置等。但需要注意的是,sys.stdout.write() 接受的参数必须是字符串类型,如果需要输出其他类型的数据,需要先将其转换为字符串。

八、sys.stdin.readline()

从标准输入流(stdin)中读取一行内容

python 复制代码
import sys

val = sys.stdin.readline()[:-1]
print(val)

代码输出如下:

九、sys.getrecursionlimit()

获取最大递归层数

python 复制代码
import sys

print(sys.getrecursionlimit())

代码输出如下:

十、sys.setrecursionlimit()

设置最大递归层数为1200次

python 复制代码
import sys

sys.setrecursionlimit(1200)

十一、sys.getdefaultencoding()

获取解释器默认编码

python 复制代码
import sys

print(sys.getdefaultencoding())

代码输出如下:

在 Python2 中则为 ASCII,如下图所示

十二、sys.getfilesystemencoding()

获取内存数据存到文件里的默认编码

python 复制代码
import sys

print(sys.getfilesystemencoding())

代码输出如下:

相关推荐
褚翾澜几秒前
Haskell语言的NoSQL
开发语言·后端·golang
zh_xuan12 分钟前
LeeCode 57. 插入区间
c语言·开发语言·数据结构·算法
aoxiang_ywj17 分钟前
【Linux】内核驱动学习笔记(二)
linux·笔记·学习
2401_8534482317 分钟前
C嘎嘎类里面的额函数
c语言·开发语言·c++
巷北夜未央27 分钟前
数据结构之二叉树Python版
开发语言·数据结构·python
wapicn9928 分钟前
手机归属地查询Api接口,数据准确可靠
java·python·智能手机·php
旧识君1 小时前
移动端1px终极解决方案:Sass混合宏工程化实践
开发语言·前端·javascript·前端框架·less·sass·scss
WhyNot?1 小时前
深度学习入门(三):神经网络的学习
深度学习·神经网络·学习
Moonnnn.1 小时前
运算放大器(五)电压比较器
笔记·学习·硬件工程
郝YH是人间理想1 小时前
OpenCV基础——傅里叶变换、角点检测
开发语言·图像处理·人工智能·python·opencv·计算机视觉