[Python学习日记-47] Python 中的系统调用模块
简介
os
sys
简介
os 模块和 sys 模块提供了很多允许你的程序与操作系统直接交互的功能。下面将进行逐一介绍。
os
一、os.getcwd()
得到当前工作目录,即当前 Python 脚本工作的目录路径(绝对路径),代码如下
import os
print(os.getcwd())
代码输出如下:
二、os.listdir()
返回指定目录下的所有文件和目录名,代码如下
import os
print(os.listdir("C:\\Users\\Administrator\\Desktop\\jove_test_module"))
代码输出如下:
三、os.remove()
该函致用来删除一个文件,删除当前目录下的文件可以直接写文件名,如果要删除其他目录下的文件请用绝对路径
import os
os.remove("file_name") # 删除当前目录下的文件,如果要删除其他目录下的文件请用绝对路径
四、os.removedirs()
该函数可以删除目录
import os
os.removedirs("C:\\Users\\Administrator\\Desktop\\remove_dir")
注意:如果目标目录不为空则会抛出 OSError 错误,多层目录也会抛出该错误,即只能删除一个空的目录。
五、os.path.isfile()
检验给出的路径是否是一个文件
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()
检验给出的路径是否是一个目录
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()
判断是否是绝对路径
import os
print(os.path.isabs("C:\\Users\\Administrator\\Desktop\\is_dir"))
print(os.path.isabs(".\\is_dir"))
代码输出如下:
八、os.path.exists()
检验给出的路径是否真实存在
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()
返回一个路径的目录名和文件名
import os
print(os.path.split("C:\\Users\\Administrator\\Desktop\\is_dir"))
代码输出如下:
十、os.path.splitext()
分离扩展名(后缀),将会返回一个包含路径的文件名和文件的扩展名
import os
print(os.path.splitext("C:\\Users\\Administrator\\Desktop\\is_file.py"))
代码输出如下:
十一、os.path.dirname()
获取路径名
import os
print(os.path.dirname("C:\\Users\\Administrator\\Desktop\\is_file.py"))
代码输出如下:
十二、os.path.abspath()
获取绝对路径
import os
print(os.path.abspath("test.py"))
代码输出如下:
十三、os.path.basename()
获取文件名
import os
print(os.path.basename("C:\\Users\\Administrator\\Desktop\\is_file.py"))
代码输出如下:
十四、os.system()
远行 shell 命令
import os
print(os.system("dir"))
代码输出如下:
注意:需要区分当前系统是 Windows 还是 Linux,两个系统之间会有 shell 的差异。
十五、os.getenv()
读取操作系统环境变量 Path 的值
import os
print(os.getenv("Path"))
代码输出如下:
即输出这里的值
注意:环境变量的读取也需要区分系统,Windows 和 Linux 之间的环境变量是不同的
十六、os.environ
返回操作系统所有的环境变量
import os
print(os.environ)
代码输出如下:
十七、os.environ,setdefault()
设置系统环境变量,仅程序运行时有效
import os
os.environ,setdefault("HOME","/home/jove")
代码效果:程序运行期间将家目录变更为 /home/jove
十八、os.linesep()
给出当前平台使用的行终止符
import os
print(os.linesep())
代码输出如下:
注意:Windows 使用 '\r\n',Linux 和 MAC 使用 '\n'
十九、os.name()
指示你正在使用的平台
import os
print(os.name)
代码传输如下:
不同系统显示如下:
系统 | 值 |
---|---|
Windows | nt |
Linux | posix |
macOS/Unix | posix |
其它系统 | 具体值需要看具体系统 |
二十、os.rename()
重命名,但不会覆盖已存在的同名文件
import os
print(os.rename("old_file_name","new_file_name"))
二十一、os.replace()
重命名,但会覆盖已存在的同名文件
import os
print(os.replace("old_file_name","new_file_name"))
二十二、os.makedirs()
创建多级目录
import os
os.makedirs("C:\\Users\\Administrator\\Desktop\\makedir1\\makedir2\\makedir3\\file.py")
代码效果如下:
注意:只能创建目录,不能创建文件
二十三、os.mkdir()
创建单个目录
import os
os.mkdir(r"C:\Users\Administrator\Desktop\makedir1\makedir11")
代码效果如下:
二十四、os.stat()
获股文件属性
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()
修改文件权限与时间戳
import os
os.chmod(r"C:\Users\Administrator\Desktop\jove_test_module\setup.py",0o400)
代码效果如下:
常见的权限模式如下:
模式 | 权限 |
---|---|
0o400 | 只读权限 |
0o600 | 读写权限 |
0o700 | 读写执行权限 |
0o755 | 所有者具有读写执行权限,其他用户只有读执行权限 |
二十六、os.path.getsize()
获取文件大小,以字节的形式输出
import os
print(os.path.getsize(r"C:\Users\Administrator\Desktop\jove_test_module\setup.py"))
代码输出如下:
二十七、os.path.join()
结合目录名与文件名
import os
print(os.path.join(r"C:\Users\Administrator\Desktop\jove_test_module","setup.py"))
代码输出如下:
二十八、os.chdir()
改变工作目录到指定目录中
import os
print(os.getcwd())
os.chdir(r"C:\Users\Administrator\Desktop\jove_test_module")
print(os.getcwd())
代码输出如下:
二十九、os.get_terminal_size()
获取当前终端的分辨率
import os
print(os.get_terminal_size())
代码输出如下:
三十、os.kill()
杀死指定进程,用 PID 来指定,与 Linux 当中的 kill 命令差不多
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
命令行参数列表,第一个元素是程序本身路径,后面就是执行时后面跟的参数
import sys
print(sys.argv)
代码输出如下:
二、sys.exit()
于终止当前程序的执行,使用方式有两种:
-
不带参数:直接调用 exit() 函数会立即终止程序的执行,并返回到调用程序的环境中。相当于在程序中遇到了终止语句。
import sys
print("Before exit")
sys.exit()
print("After exit") # 这行代码不会被执行
代码输出如下:
-
带一个整数参数:传递一个整数给 exit() 函数,可以返回一个特定的退出代码给调用程序的环境。0表示程序正常终止,非零值表示出现了错误或异常终止。
import sys
print("Before exit")
sys.exit(1)
print("After exit") # 这行代码不会被执行
代码输出如下:
三、sys.version
获取 Python 解释程序的版本信息
import sys
print(sys.version)
代码输出如下:
四、sys.maxsize
输出最大的 int 值,在 Python2 中使用的是 maxint,而在 Python3 中 maxint 被废除了,被 maxsize 代替了
import sys
print(sys.maxsize)
代码输出如下:
五、sys.path
返回模块的搜索路径,初始化时使用 PYTHONPATH 环境变量的值
import sys
print(sys.path)
代码输出如下:
六、sys.platform
返回操作系统平台名称
import sys
print(sys.platform)
代码输出如下:
常见的 sys.platform 值包括:
- win32:表示 Windows 操作系统
- darwin:表示 macOS 操作系统
- linux:表示 Linux 操作系统
- cygwin:表示在 Cygwin 环境下的 Windows 系统
- 其他特定平台的标识符
七、sys.stdout.write()
标准输出流上写入字符的方法。它接受一个字符串作为参数,并将其写入到标准输出流中,而不会像 print() 函数一样自动添加换行符。
import sys
sys.stdout.write("Please:")
代码输出如下:
相比于 print() 函数,sys.stdout.write() 的优势在于可以实现对输出内容的更精确控制,例如在一行中多次写入而不换行,或者控制输出位置等。但需要注意的是,sys.stdout.write() 接受的参数必须是字符串类型,如果需要输出其他类型的数据,需要先将其转换为字符串。
八、sys.stdin.readline()
从标准输入流(stdin)中读取一行内容
import sys
val = sys.stdin.readline()[:-1]
print(val)
代码输出如下:
九、sys.getrecursionlimit()
获取最大递归层数
import sys
print(sys.getrecursionlimit())
代码输出如下:
十、sys.setrecursionlimit()
设置最大递归层数为1200次
import sys
sys.setrecursionlimit(1200)
十一、sys.getdefaultencoding()
获取解释器默认编码
import sys
print(sys.getdefaultencoding())
代码输出如下:
在 Python2 中则为 ASCII,如下图所示
十二、sys.getfilesystemencoding()
获取内存数据存到文件里的默认编码
import sys
print(sys.getfilesystemencoding())
代码输出如下: