OS模塊

os 模塊提供了不少容許你的程序與操做系統直接交互的功能。python

 

不帶path的方法

os.system()    # 執行shell命令,保存的是執行結果,0或1linux

>>> 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方法處理交互結果shell

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

os.getcwd()    # 獲得當前工做目錄,即當前Python解釋器的目錄路徑django

# 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')     # 改變工做目錄到dirnamewindows

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

os.listdir()  # 返回指定目錄下全部文件和目錄名bash

>>> 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()    # 刪除一個文件的方法app

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

os.chmod('file')   # 修改文件權限和時間戳ide

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

os.mkdirs()   # 建立多級目錄ui

>>> 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):
    """
    客戶端從服務器下載文件
    一、拿到文件名
    二、判斷文件是否存在
        2.一、若是存在返回狀態碼和文件大小
            2.1.1 打開文件,發送數據
        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
'\n'   # Linux/OS X都是使用'\n'   windows使用'\r\n'

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'
相關文章
相關標籤/搜索