作業系統操作

      在〈作業系統操作〉中尚無留言

作業系統操作

本篇對於沒摸過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() 則判斷是否為檔案

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *