os和sys的区别和使用方法

os模块
  • 顾名思义, os是操作系统的意思,整个底层的操作系统
  • 它提供了一种方便的使用操作系统函数的方法
sys模块
  • sys 就是系统的意思,解释器系统等
  • 它提供了访问解释器使用和维护的变量和与解释器进行交互的函数

总结:os模块负责程序和操作系统的交互,提供了访问操作系统底层的接口
sys模块负责程序与python解释器的交互,提供了一系列的函数和变量,用于操控python运行时的环境

一些常用的方法

sys模块:

import sys
# 查看sys所有可用方法属性
print(dir(sys))

# sys文档
print(sys.__doc__)
print(sys.__name__)  # sys本身

# 操作系统平台
print(sys.platform)  # win32
# print(sys.modules['os'])  # 返回导入的系统模块os的路径(还可以查其他标准库路径)
print(sys.getdefaultencoding())  # utf-8 系统当前默认编码
print(sys.getfilesystemencoding())  # utf-8 文件系统编码方式
print(sys.argv)# 程序外部向程序传递的参数

print(sys.path)  # 模块的搜索路径, 标准路径

sys.stdout.write('hello')  # hello 向控制台输出
sys.stderr.write('出错啦')  # 出错啦
# value = sys.stdin.readline() # 读取输入,一行,遇换行结束
# print(value)

for i in (sys.stdin, sys.stdout, sys.stderr):
    print(i)
# <_io.TextIOWrapper name='<stdin>' mode='r' encoding='utf-8'>
# <_io.TextIOWrapper name='<stdout>' mode='w' encoding='utf-8'>
# <_io.TextIOWrapper name='<stderr>' mode='w' encoding='utf-8'>

sys.exit('出错退出') # 出错退出 exit code 1, 异常退出后面不再执行, 0 正常退出

这里着重讲一下 sys.path

# sys.path返回的是列表
# 第一个路径是当前目录
# 第二个路径是工程目录
# 其他路径是标准路径
# 第三方库路径 I:\python解释器路径\lib\site-packages

# python在导入模块的时候,会在标准路径sys.path里找, 找到了就不会再往下找了
# 所以自己的模块名千万不要和库名一致, 这时不会去库里找,导入不了库

想调用自己写的库
暂时添加:

  • 可以把自己写的库追加到标准路径
sys.path.append(r'D:\自己写的库所在目录\my_libs')
# mylibs里有t_testlib.py文件,文件里有func方法,可以导入
from t_testlib import func

# from 自己写的库所在目录\my_libs import t_testlib  报错,在他里面找,不能看到他本身的

永久添加:

  • 在site-packages里新建path1.pth,里面写上路径

os模块:

import os

# os.sys() 运行shell命令(相当于打开新的终端)
# os.environ获取环境变量,取path打印出path路径
print(os.environ['path'])
# 显示当前平台 nt代表windows  posix代表linux系统
print(os.name) # nt
# linux下支持:uname = os.uname()
# uname.sysname操作系统名 nodename主机名 release内核版本 version系统版本 machine硬件架构

# 显示当前平台下路径分隔符
print(os.sep)  # \
# 用户登录名称
print(os.getlogin())  # Administrator
# 得到环境变量配置信息
print(os.getenv('path'))
# 设置环境变量
# print(os.putenv('key'))

# --------------------------------------
# 文件操作
# os.getcwd() 当前脚本工作路径
print(os.getcwd())
# os.chdir(dir)# 改变当前路径
os.listdir('./')  # 列出指定目录下的所有文件和目录名

# 目录不存在,就新建
if not os.path.exists('mk_1'):
    os.mkdir('mk_1') # 无法创建多层递归目录

# 重命名一个文件/目录
os.rename('mk_1', 'mk_1_new')
# 删除单级目录,而且只能是空的
os.rmdir('mk_1_new')

# 创建文件
# os.mknod('t1.txt') 只能在linux下使用
with open('t.txt', 'w+') as fo:
    pass
# 删除一个文件
os.remove('t.txt')

# 创建多层递归目录
os.makedirs('mk_2/mk_2_1')
# 删除多个递归目录
os.removedirs('mk_2/mk_3')

os.path 路径的操作

# --------------------------------
import os
# 路径的操作
print(os.pardir) # 当前平台下上一级目录的字符 ..
print(os.path.pardir)   # ..
# 获取文件的绝对路径
print(os.path.abspath(os.path.pardir))  # D:\interface\study
# 返回当前文件的上一级目录 dirnaem  getcwd
print(os.path.dirname(__file__))  # D:\interface\study\DS
print(os.getcwd()) # D:\interface\study\DS

# 文件夹和文件名进行分割
print(os.path.split(os.path.abspath(__file__)))
# ('D:\interface\\study\\DS', 'ttt_sys.py')

# 分割文件扩展名,返回路径名和文件扩展名的元祖
print(os.path.splitext(os.path.abspath(__file__)))
# ('D:\\interface\\study\\DS\\ttt_sys', '.py')

# os.path.join() # 拼接
print(os.path.join('D:/f1/','f2/','f3/'))  # D:/f1/f2/f3/
print(os.path.basename(__file__)) # 返回文件名 ttt_sys.py

print(os.path.getctime(__file__))  # 返回创建时间戳 1660280610.3479886

import time
# 把时间戳转成本地时间
print(time.strftime('%Y-%m-%d %H:%M:%S', time.localtime(os.path.getctime(__file__))))
# 2022-08-12 13:03:30

# os.path.exists()  # 判断文件是否存在
# os.path.isdir()  # 是不是目录
# os.path.isfile()  # 是不是文件
# os.path.isabs()  # 是不是绝对路径
# os.path.islink()  # 是不是连接文件(linux里面使用)
# os.path.samefile()  # 判断两个文件是不是指的同一个文件

# 遍历文件夹的所有目录与文件
path = os.walk('D:\songqin\interface\study\Delivery_system', topdown=True)
for one in path:
    print(one[0], end='  ')
    print(one[1], end='  ')
    print(one[2])

这里非常重要的是os.path.join(),它是以第一个不是/开头的字符开始拼接的,会忽略前面带/的字符串,所以第一个不要带/, 最好写路径是前不带/, 后带/, 如 configs/

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值