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

    os 模块提供了很多允许你的程序与操作系统直接交互的功能。

    不带path的方法

    os.system()    # 执行shell命令,保存的是执行结果,0或1

    >>> os.system('df -h')
    Filesystem      Size   Used  Avail Capacity  iused    ifree %iused  Mounted on
    /dev/disk1     112Gi   64Gi   47Gi    58% 16897618 12424108   58%   /
    devfs          179Ki  179Ki    0Bi   100%      621        0  100%   /dev
    map -hosts       0Bi    0Bi    0Bi   100%        0        0  100%   /net
    map auto_home    0Bi    0Bi    0Bi   100%        0        0  100%   /home
    0   # linux命令执行返回值

    os.popen()   # 将系统交互内存保存到内存中,往往可以搭配read方法处理交互结果

    >>> os.popen('df -h')
    <os._wrap_close object at 0x103978160>
    >>> f = os.popen('du -sh /Users/hqs')
    >>> f.read()
    '2.6G	/Users/hqs
    '
    >>> f = os.popen('du -sh /Users/hqs')
    >>> f.readlines()
    ['2.6G	/Users/hqs
    ']

    os.getcwd()    # 得到当前工作目录,即当前Python解释器的目录路径

    # vi /Users/huangqiushi/PycharmProjects/checkServer/test_os.py
    import os
    print(os.getcwd())
    
    # cd /
    # python /Users/huangqiushi/PycharmProjects/checkServer/test_os.py
    输出:/
    
    # cd /tmp
    # python /Users/huangqiushi/PycharmProjects/checkServer/test_os.py
    输出/tmp

    os.chdir('dirname')     # 改变工作目录到dirname

    >>> os.getcwd()
    '/Users/hqs/PycharmProjects/checkServer'
    >>> os.chdir('/tmp')
    >>> os.getcwd()
    '/private/tmp'

    os.listdir()  # 返回指定目录下所有文件和目录名

    >>> import os
    >>> os.listdir('.')
    ['.DS_Store', 'atm_shopmall', 'atm_shopmall.zip', 'startMyPython3.0']
    >>> os.listdir()  # 默认目录就是当前目录
    ['.DS_Store', 'atm_shopmall', 'atm_shopmall.zip', 'startMyPython3.0']

    os.rename()   # 对一个文件改名

    >>> os.listdir(os.getcwd())
    ['.idea', 'checkCpu.py', 'checkServer.py', 'test_os.py']
    >>> os.rename('test_os.py','test_new.py')
    >>> os.listdir(os.getcwd())
    ['.idea', 'checkCpu.py', 'checkServer.py', 'test_new.py']

    os.remove()    # 删除一个文件的方法

    >>> os.remove('atm_shopmall.zip')
    >>> os.listdir()
    ['.DS_Store', 'atm_shopmall', 'startMyPython3.0']

    os.chmod('file')   # 修改文件权限和时间戳

    >>> os.chmod("test_new.py",755)

    os.mkdirs()   # 创建多级目录

    >>> os.makedirs('home/hqs/test/练习.py')
    >>> os.listdir('home/hqs/test/')
    ['练习.py']

    os.mkdir()   # 创建单个目录(不会递归,父目录不存在将报错)

    os.stat('file')   # 获取文件属性(主要用来获取文件大小

    >>> os.listdir(".")
    ['.idea', 'checkCpu.py', 'checkServer.py', 'home', 'test_new.py']
    >>> os.stat(".")
    os.stat_result(st_mode=16877, st_ino=6423017, st_dev=16777220, st_nlink=7, st_uid=501, st_gid=20, st_size=238, st_atime=1519638374, st_mtime=1519638170, st_ctime=1519638170)
    >>> os.stat("test_new.py")
    os.stat_result(st_mode=33188, st_ino=8278124, st_dev=16777220, st_nlink=1, st_uid=501, st_gid=20, st_size=91, st_atime=1519634046, st_mtime=1519634046, st_ctime=1519634046)
    def _get(self, data):
        """
        客户端从服务器下载文件
        1、拿到文件名
        2、判断文件是否存在
            2.1、如果存在返回状态码和文件大小
                2.1.1 打开文件,发送数据
            2.2、如果不存在,返回状态码
    
        :param data:
        :return:
        """
        filename = data.get('filename')  # 拿到文件名,data在handle方法中
        full_path = os.path.join(self.user_obj.home, filename)  # 家目录和文件名拼起来
        if os.path.isfile(full_path):  # 判断文件是否存在
            filesize = os.stat(full_path).st_size    # os.stat获取文件属性,st_size为文件大小
            self.send_response(301, filesize=filesize)

    os.linesep    # 返回当前平台使用的行终止符

    >>> os.linesep
    '
    '   # Linux/OS X都是使用'
    '   windows使用'
    '

    os.name    # 提示正在使用的平台

    >>> os.name
    'posix'     # 对于Linux/Unix用户,都是"posix"   windows是"nt"

    os.getenv("HOME")  # 读取操作系统环境变量的值

    >>> import os
    >>> os.getenv("HOME")
    '/Users/hqs'
    >>> os.getenv('PATH')
    '/Library/Frameworks/Python.framework/Versions/3.6/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Applications/VMware Fusion.app/Contents/Public'

    os.environ    # 返回操作系统所有的环境变量

    >>> os.environ
    environ({'TERM_PROGRAM': 'Apple_Terminal', 'SHELL': '/bin/bash', 'TERM': 'xterm-256color', 'TMPDIR': '/var/folders...})

    os.environ.setdefault('HOME', '/home/hqs')  # 没有就添加字典,有则返回

    ###############django项目manage.py文件###############
    import os
    import sys
    
    if __name__ == "__main__":
        # environ:返回操作系统所有的环境变量
        # os.environ.setdefault('HOME', '/home/hqs')  # 没有就添加字典,有则返回
        os.environ.setdefault("DJANGO_SETTINGS_MODULE", "alipay.settings")
        try:
            from django.core.management import execute_from_command_line
        except ImportError as exc:
            raise ImportError(
                "Couldn't import Django. Are you sure it's installed and "
                "available on your PYTHONPATH environment variable? Did you "
                "forget to activate a virtual environment?"
            ) from exc
        execute_from_command_line(sys.argv)
    

    os.get_terminal_size()    # 获取终端大小

    >>> os.get_terminal_size()
    os.terminal_size(columns=80, lines=25)  # 能写25行,每行可以写入80个字符

    os.kill()   # 杀死进程

    >>> os.system('sleep 100000')
    >>> os.system('ps aux|grep sleep')
    hqs      5164   0.0  0.0  2434840    776 s000  S+    6:10下午   0:00.00 grep sleep
    hqs      5162   0.0  0.0  2444652   1072 s000  S+    6:10下午   0:00.01 sh -c ps aux|grep sleep
    hqs      5141   0.0  0.0  2434824    364 s000  S     6:04下午   0:00.00 sleep 100000
    >>> import signal
    >>> os.kill(5164,signal.SIGILL)
    带PATH的方法

    os.path.isfile()       # 判断是否是一个文件

    os.path.isdir()        # 判断是否是一个目录

    os.path.isabs()       # 判断是否是绝对路径

    os.path.exists()      # 检查路径是否真的存在(文件或目录)

    >>> os.path.exists("/Users/hqs/PycharmProjects/startMyPython3.0")
    True
    >>> os.path.exists("sys_module.py")
    False

    os.path.split()         # 返回一个路径的目录名和文件名

    >>> os.path.split("sys_module.py")
    ('', 'sys_module.py')
    >>> os.path.split("/Users/hqs/PycharmProjects/startMyPython3.0")             
    ('/Users/hqs/PycharmProjects', 'startMyPython3.0')
    >>> os.path.split("/Users/hqs/PycharmProjects/startMyPython3.0/第五章-面向 象 /21 property的使用.py")
    ('/Users/hqs/PycharmProjects/startMyPython3.0/第五章-面向对象', '21 property的使用.py')

    os.path.splitext()        # 分离扩展名

    >>> os.path.splitext("/Users/hqs/PycharmProjects/startMyPython3.0/第五章-面向对 象/21 property的使用.py")
    ('/Users/hqs/PycharmProjects/startMyPython3.0/第五章-面向对象/21 property的使用', '.py')
    >>> os.path.splitext("sys_module.py")
    ('sys_module', '.py')
    

    os.path.dirname()   # 获取当前路径名

    >>> os.path.dirname('/home/hqs')
    '/home'
    >>> os.path.dirname('/home')
    '/'
    >>> os.path.dirname('/Users/hqs/PycharmProjects/startMyPython3.0')
    '/Users/hqs/PycharmProjects'

    os.path.abspath()    # 获取绝对路径

    >>> os.path.abspath('.')
    '/Users/hqs/PycharmProjects/startMyPython3.0'
    >>> os.path.abspath('/home')
    '/home'

    os.path.basename()     # 获取文件名

    >>> os.path.basename('/home')
    'home'
    >>> os.path.basename('/Users/hqs/PycharmProjects/startMyPython3.0')
    'startMyPython3.0'
    >>> os.path.basename('/Users/hqs/PycharmProjects/startMyPython3.0/第一章-基础语法')
    '第一章-基础语法'

    os.path.getsize('filename')       # 获取文件大小

    >>> os.path.getsize('test_new.py')
    91

    os.path.join('dir', 'filename')     # 结合目录名和文件名

    >>> os.path.join('root','test','练习.py')
    'root/test/练习.py'
  • 相关阅读:
    IE7下总提示" 缺少标识符、字符串或数字"
    #pragma 用法
    破解win7开机密码
    教你怎么样设计一块好的PCB板精华教程
    Object reference not set to an instance of an object. 'Infinity' is not a valid value for property 'width'.
    验证时出错,HRESULT = '8000000A'
    WIN7打补丁后VS2012出现版本不兼容
    VS的快捷键
    WPF学习记录1:ListView的一个模板
    使用Xposed Installer实现Android Hook
  • 原文地址:https://www.cnblogs.com/xiugeng/p/8646263.html
Copyright © 2011-2022 走看看