作業系統操作
本篇對於沒摸過Linux的人, 會有點難度
系統狀態
os.name會列出作業系統類型, 如nt, posix
os.uname 列出詳細資訊, 注意在windows下沒有這個指令, 會產生例外
import os print("os name :", os.name) print("os uname :",os.uname()) 結果 thomas@ubuntu_server:~$ python3 os.py os name : posix os uname : posix.uname_result(sysname='Linux', nodename='ubuntu_server', release='4.15.0-50-generic', version='#54-Ubuntu SMP Mon May 6 18:46:08 UTC 2019', machine='x86_64')
環境變數
作業系統存在許多環境變數, 可用os.environ()列出, 或用os.environ.get(‘變數名稱’)列印出來
import os print(os.environ, '\n') print(os.environ.get('PATH')) 結果 : environ({'SSH_CONNECTION': '180.217.236.114 33188 192.168.1.5 22', 'LANG': 'en_US.UTF-8', 'XDG_SESSION_ID': '56', 'USER': 'thomas', 'PWD': '/home/thomas', 'HOME': '/home/thomas', 'SSH_CLIENT': '180.217.236.114 33188 22', 'XDG_DATA_DIRS': '/usr/local/share:/usr/share:/var/lib/snapd/desktop', 'SSH_TTY': '/dev/pts/1', 'MAIL': '/var/mail/thomas', 'TERM': 'xterm', 'SHELL': '/bin/bash', 'SHLVL': '1', 'LOGNAME': 'thomas', 'XDG_RUNTIME_DIR': '/run/user/1000', 'PATH': '/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/mssql-tools/bin', '_': '/usr/bin/python3'}) /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/mssql-tools/bin
檔案目錄操作
os.path.abspath(‘.’) : 目前所在目錄的絕對路徑
os.path.join(‘/home/kevin’, ‘mp3’) : 結果會印出 /home/kevin/mp3
os.mkdir(‘dir1/dir2’) : 在當前目錄之下, 建立新目錄, 請注意, 不可使用 ~, 且若dir1不存在, 會發生例外, 需要一層一層往下建立
os.rmdir(‘/home/kevin/dir’) 刪除目錄
os.path.split() 將最後級別的檔案或目錄, 與前段分開
import os for x in os.path.split('/home/thomas/dir/mybook.txt'): print(x) 結果 /home/thomas/dir mybook.txt
os.path.splitext() : 可以將副屬檔名拆開. 也就是說, 如果沒有 “.” 的話, 就只有前面的全路徑, 沒有副屬檔名
import os for x in os.path.splitext('/home/thomas/dir/mybook.txt'): print(x) for x in os.path.splitext('/home/thomas/dir/mybook'): print(x) 結果 : /home/thomas/dir/mybook .txt /home/thomas/dir/mybook
join, split其實只是對字串的操作而以, 並不是實際去更改路徑的
os.rename(‘os.txt’, ‘os.py’) 更改檔名
os.remove(‘os.py’) 刪除檔案
過濾程式
若想列出目前目錄之下的所有目錄, 可用如下方式
import os for x in os.listdir('.'): if os.path.isdir(x): print (x) 或是如下 import os for dir in [list for list in os.listdir('.') if os.path.isdir(list)]: print(dir)
os.path.isdir() 判斷參數裏的字串是否為當前目錄下的目錄
os.path.isfile() 則判斷是否為檔案