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'