zoukankan      html  css  js  c++  java
  • os模块

    os -- 操作系统接口模块

    OS模块提供了一些方便使用操作系统相关的函数

    常用方法:

    1、os.name --获取操作系统平台

    >>> os.name
    'posix'
    

    2、os.getcwd() --获取当前工作目录

    >>> os.getcwd()
    '/home/test'
    

    3、os.chdir(path) --改变当前工作目录

    >>> os.chdir('..')
    >>> os.getcwd()
    '/home'
    

    4、os.listdir(path) --返回path指定的文件夹包含的文件或文件夹的名字的列表

    >>> os.listdir()
    ['file2.txt', 'file1.txt']
    

    5、os.stat(path) --获取path指定的路径的信息

    >>> os.stat('file1.txt')
    os.stat_result(st_mode=33188, st_ino=6042576, st_dev=2054, st_nlink=1, st_uid=1000, st_gid=1000, st_size=0, st_atime=1589721256, st_mtime=1589721256, st_ctime=1589721256)
    

    6、os.link(src,dst) --创建硬链接,名为参数 dst,指向参数 src

    >>> os.link('file1.txt','file3.txt')
    
    结果:
    linux-ko5m:/home/python/test # ll -i
    总用量 0
    269 -rw-r--r-- 2 root root 0 5月  17 21:19 file1.txt
    270 -rw-r--r-- 1 root root 0 5月  17 21:19 file2.txt
    269 -rw-r--r-- 2 root root 0 5月  17 21:19 file3.txt
    

    7、os.symlink(src, dst) --创建一个软链接

    >>> os.symlink('file1.txt','file4.txt')
    
    执行结果:
    linux-ko5m:/home/python/test # ll -i
    总用量 4
    269 -rw-r--r-- 2 root root 0 5月  17 21:19 file1.txt
    270 -rw-r--r-- 1 root root 0 5月  17 21:19 file2.txt
    269 -rw-r--r-- 2 root root 0 5月  17 21:19 file3.txt
    271 lrwxrwxrwx 1 root root 9 5月  17 21:22 file4.txt -> file1.txt
    

    8、**os.walk() **

    语法:
    os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

    参数:

    top -- 根目录下的每一个文件夹(包含它自己), 产生3-元组 (dirpath, dirnames, filenames)【文件夹路径, 文件夹名字, 文件名】。
    
    topdown --可选,为True或者没有指定, 一个目录的的3-元组将比它的任何子文件夹的3-元组先产生 (目录自上而下)。如果topdown为 False, 一个目录的3-元组将比它的任何子文件夹的3-元组后产生 (目录自下而上)。
    
    onerror -- 可选,是一个函数; 它调用时有一个参数, 一个OSError实例。报告这错误后,继续walk,或者抛出exception终止walk。
    
    followlinks -- 设置为 true,则通过软链接访问目录。
    

    详解:

      os.walk(top, topdown=True, onerror=None, followlinks=False)
      可以得到一个三元tupple(dirpath, dirnames, filenames)
      第一个为文件路径,第二个为所有文件夹名,第三个是所有文件夹下的文件,它会输出所有的文件和路径
      dirpath 是一个string,代表目录的路径
      dirnames 是一个list,包含了dirpath下所有子目录的名字
      filenames 是一个list,包含了非目录文件的名字
    
    #!/usr/bin/python
    # -*- coding: UTF-8 -*-
    
    import os
    for root, dirs, files in os.walk("1", topdown=False):
        for name in files:
            print(os.path.join(root, name))
        for name in dirs:
            print(os.path.join(root, name))
    
    
    结果:
    linux-ko5m:/home/python/test # ./walk.py 
    1/2/file1.txt
    1/2/file2.txt
    1/2/3
    1/a/b/a.txt
    1/a/b/b.txt
    1/a/b
    1/2
    1/a
    

    (1)先从根目录进行遍历,读取跟目录的文件夹和文件。

    (2)以根目录第一个子目录为新的根目录,读取其文件夹和文件。

    (3)再以2中的第一个子文件夹为根目录,读取文件夹和文件。(这个应该是属于树结构里面的自上而下深度遍历算法)

    (4)读取1步骤里面其他子目录的文件夹和文件。

    9、os.environ --以字典的形式返回环境变量

    >>> import os
    >>> os.environ
    {'NO_AT_BRIDGE': '1', 'LIBGL_DEBUG': 'quiet', 'G_BROKEN_FILENAMES': '1', 'MINICOM': '-c on', 'CSHEDIT': 'emacs', 'HOSTTYPE': 'x86_64', 'LESSOPEN': 'lessopen.sh %s', 'SSH_CLIENT': '172.16.213.1 55986 22', 'MACHTYPE': 'x86_64-suse-linux', 'LOGNAME': 'root', 'USER': 'root', 'INPUTRC': '/etc/inputrc', 'HOME': '/root', 'PATH': '/sbin:/usr/sbin:/usr/local/sbin:/root/bin:/usr/local/bin:/usr/bin:/bin:/usr/games', 'XKEYSYMDB': '/usr/X11R6/lib/X11/XKeysymDB', 'SSH_CONNECTION': '172.16.213.1 55986 172.16.213.130 22', 'LANG': 'zh_CN.UTF-8', 'TERM': 'xterm-256color', 'SHELL': '/bin/bash', 'SHLVL': '1', 'XDG_SESSION_ID': '1', 'LESS': '-M -I -R', 'CPU': 'x86_64', 'HISTSIZE': '1000', 'LESS_ADVANCED_PREPROCESSOR': 'no', 'MANPATH': '', 'OSTYPE': 'linux', 'PROFILEREAD': 'true', 'XDG_RUNTIME_DIR': '/run/user/0', 'NNTPSERVER': 'news', 'G_FILENAME_ENCODING': '@locale,UTF-8,GB2312,GB18030,GBK,ISO-8859-1', 'HOST': 'linux-ko5m', 'LESSKEY': '/etc/lesskey.bin', 'LESSCLOSE': 'lessclose.sh %s %s', 'LS_OPTIONS': '-A -N --color=tty -T 0', 'GPG_TTY': '/dev/pts/0', 'XNLSPATH': '/usr/X11R6/lib/X11/nls', '_': '/usr/bin/python', 'FROM_HEADER': '', 'XDG_CONFIG_DIRS': '/etc/xdg', 'PYTHONSTARTUP': '/etc/pythonstart', 'SSH_TTY': '/dev/pts/0', 'OLDPWD': '/home/python', 'HOSTNAME': 'linux-ko5m', 'WINDOWMANAGER': '', 'SSH_SENDS_LOCALE': 'yes', 'XDG_DATA_DIRS': '/usr/share', 'PWD': '/home/python/test', 'COLORTERM': '1', 'MAIL': '/var/mail/root', 'LS_COLORS': 'no=00:fi=00:di=01;34:ln=00;36:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=41;33;01:ex=00;32:*.cmd=00;32:*.exe=01;32:*.com=01;32:*.bat=01;32:*.btm=01;32:*.dll=01;32:*.tar=00;31:*.tbz=00;31:*.tgz=00;31:*.rpm=00;31:*.deb=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.lzma=00;31:*.zip=00;31:*.zoo=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.tb2=00;31:*.tz2=00;31:*.tbz2=00;31:*.xz=00;31:*.avi=01;35:*.bmp=01;35:*.fli=01;35:*.gif=01;35:*.jpg=01;35:*.jpeg=01;35:*.mng=01;35:*.mov=01;35:*.mpg=01;35:*.pcx=01;35:*.pbm=01;35:*.pgm=01;35:*.png=01;35:*.ppm=01;35:*.tga=01;35:*.tif=01;35:*.xbm=01;35:*.xpm=01;35:*.dl=01;35:*.gl=01;35:*.wmv=01;35:*.aiff=00;32:*.au=00;32:*.mid=00;32:*.mp3=00;32:*.ogg=00;32:*.voc=00;32:*.wav=00;32:', 'PAGER': 'less', 'MORE': '-sl'}
    
    >>> os.environ['HOME']
    '/root'
    

    10、os.getenv() --获取环境变量

    >>> os.getenv('HOME')
    '/root'
    

    11、os.putenv(key,value) --设置环境变量

    >>> os.putenv('HISTSIZE', '500')
    

    12、os.sep --可以取代操作系统特定的路径分隔符

    >>> os.sep
    '/'
    

    13、os.remove(path) --函数用来删除一个文件

    >>> os.listdir()
    ['1', 'walk.py', 'file.txt']
    >>> os.remove('file.txt')
    >>> os.listdir()
    ['1', 'walk.py']
    >>> 
    

    14、os.makedirs(path) --创建路径(递归)

    os.makedirs('a/b/c/d/e')
    

    15、os.mkdir(path) --创建路径(非递归)

    os.mkdir('a')
    
  • 相关阅读:
    宏任务与微任务
    reactnative 自定义项目的图标库
    react-native中textInput在androidTV上的焦点处理(坑篇)
    js中!!的运用
    ES6里class杂乱随笔
    浅析链式调用
    link和@import的区别
    ES2020链判断运算符?.和Null判断运算符??
    vue组件使用name属性来生成递归组件
    k8s学习——相关概念
  • 原文地址:https://www.cnblogs.com/jingxindeyi/p/12927120.html
Copyright © 2011-2022 走看看