• Python3-笔记-E-005-库-系统os


    import os
    import signal

    # 执行命令
    dirs = os.popen("dir").read()
    print(dirs)

    # 打印目录树
    dirs_info = os.scandir()
    for info in dirs_info:
    print("文件名: {}, 路径: {}, inode: {}, 文件夹? {}, 文件? {}, 链接? {}".format(info.name, info.path, info.inode(), info.is_dir(), info.is_file(), info.is_symlink()))
    stats = info.stat()
    print(">>> 访问时间: {}, 修改时间: {}, 模式修改时间: {}, 大小: {}".format(stats.st_atime, stats.st_ctime, stats.st_mtime, stats.st_size))

    # === 系统 ===
    strs = os.name # 当前系统: Linux'posix' / Windows'nt' / 'ce' / 'java'
    strs = os.sep # 分隔符 \ (windows:\ linux:/)
    strs = os.pathsep # path变量分隔符 ; (windows:; linux::)
    strs = os.linesep # 换行分隔符 (windows:/r/n linux: )
    dics = os.environ # 查看系统环境变量(字典)
    strs = os.getenv("Path", default=-1) # 读取环境变量, 没有返回None
    os.putenv("Path", "C:\python") # 添加环境变量 (windows无效)
    # os.unsetenv("Path") # 删除环境变量 (windows不可用)
    strs = os.getlogin() # 当前登录的用户名
    num = os.getpid() # 当前进程PID
    num = os.system("cmd") # 执行操作系统命令, 返回0/1(0执行正确;1执行错误)
    strs = os.popen("dir").read() # 执行系统命令,并去读结果
    tups = os.times() # 当前进程时间(user用户 / system系统 / children_user子用户(windews=0) / children_system子系统(windews=0) / elapsed过去时间)
    bytes = os.urandom(10) # n字节用以加密的随机字符
    num = os.cpu_count() # CUP数量
    
    
    '''  未测试
    # === 进程 ===
    os.abort() # 结束进程
    # execl(file, *args) / execle / execlp / execlpe / execv / execve / execvp / execvpe // 运行新程序替换当前进程
    os.execl(r"C:python", 'python', 'hello.py', 'i') # (windows执行失败)
    os._exit(0) # 退出
    os.kill(8480, signal.SIGTERM) # (系统) 终止进程(需要导入:signal) SIGINT (终止进程) / SIGTERM (终止进程) / SIGKILL (终止进程) / SIGALRM (闹钟信号)
    '''
    
    
    # === 文件 / 文件夹 ===
    strs = os.getcwd() # 当前路径 'E:\python\练习\笔记'
    bytes = os.getcwdb() # 当前路径 b'E:\python\xc1xb7xcfxb0\xb1xcaxbcxc7'
    os.chdir(r"C:Windows") # 切换路径
    strs = os.curdir # 当前目录 .
    strs = os.pardir # 上级目录 ..
    strs = os.sep # 路径分隔符 ('/' or '\')
    bytes = os.fsencode(r"C:c.obj") # (编码) 文件路径字符串转为bytes类型 => b'C:\c.obj'
    strs = os.fsdecode(b"C:c.obj") # (解码) 文件路径转为strs类型 => 'C:\c.obj'
    # chmod(path, mode, *, dir_fd=None, follow_symlinks=True)

    os.chdir('E:\python\练习\笔记')
    os.chmod(r"file.txt", 777) # 修改模式
    os.link("file.txt", "file.txt.link") # 创建硬链接
    # os.symlink("file.txt", "file.txt.link") # 创建软链接 (windows执行失败)
    lists = os.listdir() # 所有文件和文件夹(列表) ".""..""D:"
    # lstat(path, *, dir_fd=None)
    tups = os.lstat(r"file.txt") # 状态信息列表
    boolean = os.access(r"file.txt", os.F_OK) # (文件/文件夹) 权限测试 (mode: F_OK存在? / R_OK可读? / W_OK可写? / X_OK可执行?)
    # scandir(path='.') // DirEntry迭代器, 文件目录
    lists = os.scandir()
    # st_atime (访问时间) / st_ctime (修改时间) / st_mtime (模式修改时间) / st_size (大小(字节bytes))
    # st_uid (用户ID) / st_gid (用户组ID)
    # st_ino (inode) / st_mode (模式) / st_dev (设备) / st_nlink (硬链接)
    # count = cpu_count() # (系统) CPU线程数(非核数)
    tups = os.stat(".") # 获取状态信息, 返回stat_result对象
    # utime(path, times=None, *, ns=None, dir_fd=None, follow_symlinks=True) // 更新文件的访问和修改时间
    num = os.utime(r"file.txt")
    # walk(top, topdown=True, onerror=None, followlinks=False) // 根目录(top)遍历目录树,返回迭代器 (dirpath, dirnames[], filenames[]).
    for root, dirs, files in os.walk(".", topdown=False):
    for name in files:
    print(os.path.join(root, name))
    for name in dirs:
    print(os.path.join(root, name))

    # mkdir(path, mode=0o777, *, dir_fd=None) // 创建单个目录, 文件夹已存在, FileExistsError 异常
    os.mkdir("test")
    # makedirs(name, mode=0o777, exist_ok=False) // 创建(多个)文件夹
    os.makedirs(r"./t1/t2/t3")
    os.rmdir("test") # 删除单个目录
    os.removedirs(r"./t1/t2/t3") # 删除多个文件夹

    # mknod(path, mode=0o600, device=0, *, dir_fd=None) // 创建空文件 (windows不可用)
    # os.mknod("test.txt")
    # rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None)
    os.rename("file.txt.link", "link.file") # 重命名
    os.renames("link.file", "link.file.2")
    # replace(src, dst, *, src_dir_fd=None, dst_dir_fd=None) // 重命名, 存在则替换
    os.replace("link.file.2", "link.file.3")
    tups = os.stat(r"file.txt") # 文件属性
    # remove(path, *, dir_fd=None)
    # os.remove("link.file.3") # 删除文件




    # === 文件读写 ===
    # open(path, flags, mode=0o777, *, dir_fd=None) // 打开文件 fd:文件描述符
    fd = os.open(r"C:c.obj", os.O_RDWR | os.O_CREAT)
    readfd, writefd = os.pipe() # 打开管道,返回读取,写入 , 4, 5
    # fdopen(fd, *args, **kwargs) // 打开 (windews写入失败,读取""字符)
    f = os.fdopen(readfd)

    os.read(fd, 150) # 读取
    os.write(fd, "String".encode("utf-8")) # 写入
    os.fsync(fd) # 强行写入
    os.ftruncate(fd, 100) # 裁剪文件
    bytes = os.lseek(fd, 10, os.SEEK_SET) # 设置指针 SEEK_SET(0开始) SEEK_CUR(1当前位置) SEEK_END(2末尾)

    fd_temp = os.dup(fd) # 副本
    boolean = os.isatty(fd) # 是否是tty设备

    stat = os.fstat(fd) # 状态信息
    strs = os.device_encoding(fd) # 返回终端字符编码,非终端None

    os.close(fd) # 关闭
    os.closerange(fd, fd) # 关闭并忽略错误
    
    
    # === DirEntry ===
    for dir in os.scandir():
    strs = dir.name # 文件名
    strs = dir.path # 完整路径名
    num = dir.inode() # inode编号
    boolean = dir.is_dir() # 是否是文件夹
    boolean = dir.is_file() # 是否是文件
    boolean = dir.is_symlink() # 是否是链接
    tups = dir.stat() # 状态信息的stat_result对象
     
    
    
  • 相关阅读:
    小达同学软件测试第四讲-执行测试
    小达同学软件测试第四讲-执行测试
    Android Studio一直显示Building“project name”Gradle project info问题详解
    Android Studio一直显示Building“project name”Gradle project info问题详解
    安卓入门基础(九)-对应用结构进行分析
    安卓入门基础(九)-对应用结构进行分析
    深入浅出的排序算法-冒泡排序
    深入浅出的排序算法-冒泡排序
    【程序人生】献给还不知道怎么坚持的你
    【程序人生】献给还不知道怎么坚持的你
  • 原文地址:https://www.cnblogs.com/vito13/p/7735839.html
Copyright © 2020-2023  润新知