os模块

Posted 娄先生

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了os模块相关的知识,希望对你有一定的参考价值。

os模块:是python是系统交互的模块

import os
# 0平台信息的一些操作
    python是夸平台的,所以内部兼容了不同的平台
        1. os.name  # 操作系统 nt是win
        2. os.sep   # 路径的分隔符。 win是‘\\‘ linux是’/‘
        3. os.environ        # 获取环境变量
           os.getenv(PATH) # 获取指定的环境变量,设置自己扩展
           

# 1切换工作路径
文件的创建,修改等都是在工作路径下进行的
win下有两种切换路径的方式:
    1. rd:\python\liv  # 使用原生字符串避免转义
    2. d:\\python\\liv # 使用\\进行转义
os.getcwd()  # 获取当前工作路径
os.chdir(d:\\python)   # 更改当前的工作路径
os.getcwd()  # 获取当前工作路径,查看变化

# 2 执行系统命令
执行系统命令os有两个方法:
    system    无返回值
    popen    有返回值
os.system(dir) # 直接打印使用窗口自带编码
r = os.popen(dir) # 存储到r中
r.read()    # 通过r来读取,自己转码

# 3.目录操作
# 创建
os.mkdir(test) # 只能生成一个文件夹
os.mkdir(r.\test\1)
os.makedirs(rtest2\1\2) # 递归创建,全部文件都存在则报错
os.mkkedirs(rtest2\1\2) # 文件存在不报错,就不会创建了

# 重命名
os.rename(test, lh)   # 文件夹重命名

# 删除
os.rmdir(test/1) # 删除单个文件夹,文件夹为空时才能删除,一般先删文件,再山文件夹
os.removedirs(test/1/2/3) # 删除一个文件夹时,如果上级为空,就一起删除,递归上去

os.remove(tste2\1\2\3\1.txt) # 删除单个文件

#4. 子目录操作
os.listdir() # 列出工作目录(或其他路径)下的文件与文件夹


5. 获取文件或目录信息
os.stat(temp) # 获取文件的大小,各种时间,组信息等
#st_atime: 上次访问的时间。
#st_mtime: 最后一次修改的时间。
#st_ctime: 由操作系统报告的"ctime"。在某些系统上(如Unix)是最新的元数据更改的时间,
                                    #在其它系统上(如Windows)是创建时间(详细信息参见平台的文档)。
#6. 路径相关path
   path是os包中的一个子类:

# 路径拼接   
a = os.path.join(os.getcwd(),test) # 拼接路径
os.path.exists(a)  # 判断路径是否存在
os.path.isdir(a)   # 判断是否是一个文件夹

# 绝对路径和相对路径
os.path.abspath(.) # 获取绝对路径
os.path.isabs(.)   # 判断是否为绝对路径,不存在也可以
os.path.relpath(a,b) # 返回一个以b为绝对路径,a在b中的相对路径;以b为基准
os.path.relpath(rC:\Users\LH\tste2\1\2\3.txt,rC:\Users\LH\tste2\1\2\3\2.txt)

# 路径分割
a = rC:\Users\LH\tste2\1\2\3
a.split(\\)      # 在跨平台,只能手动来搞,使用字符串的方法来分割
a.split(os.sep)    # 兼容跨平台,使用os.sep来分割,推荐使用这种

os.path.split(a)    # 分割最后一个元素,不管是文件还是文件夹
os.path.splitext(a) # 分割后缀名,如果无后缀名则为空
os.path.splitdive(a)# 分割盘符
os.path.dirname(a)  # 返回文件夹名字
os.path.basename(a) # 放回最后一个名字(文件或文件夹) 
 

 

shutil 模块
针对os在删除目录的不是很友好,引进了一个模块,进行了一个二次封装。
import shutil
os.unlink == os.remove  # 删除单个文件
shutil.rmtree()   # 删除整个目录,不管下面有没有文件
shutil.copy()   # 拷贝文件
shutil.copytree() # 拷贝目录,os模块中没有 shutil.move() # 移动文件,

 

以上是关于os模块的主要内容,如果未能解决你的问题,请参考以下文章

如何有条件地将 C 代码片段编译到我的 Perl 模块?

python os 模块

vscode代码片段建议bug

java代码在片段活动中不起作用

Python OS模块

python小知识片段