Python全棧之路----經常使用模塊----os模塊

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

  • 獲得當前工做目錄,即當前Python腳本工做的目錄路徑:os.getcwd()
#test.py
import os
print(os.getcwd())
D:\ProgramLearning>python Py_program\test.py
D:\ProgramLearning #顯示的是當前python解釋器所在的目錄,而不是文件所在目錄
  • 返回指定目錄下的全部文件和目錄名:os.listdir()
#test.py
import os
print(os.listdir('.'))
D:\ProgramLearning>python Py_program\test.py #打印ProgramLearning下的目錄
['HuJiang_Python', 'Py_program']

D:\ProgramLearning>cd Py_program

D:\ProgramLearning\Py_program>python test.py #打印Py_program下的目錄
['.idea', '01模塊一.md', '3thMenu.py', 'account.txt', 'Dic_test.py', 'file_rewrite.py', 'function_test.py', 'my_module.py', 'Shopping.py', 'test.py', 'test1.py', 'U2_test.py', 'venv', '電視劇.txt', '虛擬環境下載.docx']
  • 函數用來刪除一個文件:os.remove()
  • 刪除多個目錄:os.removedirs(r"C:\python")
  • 檢驗給出的路徑是不是一個文件:os.path.isfile()
  • 檢驗給出的路徑是不是一個目錄:os.path.isdir()
  • 判斷是不是絕對路徑:os.path.isabs()
  • 檢驗給出的路徑是否真的存在:os.path.exists()
  • 返回一個路徑的目錄名和文件名:os.path.split() 把文件名和目錄分開
    • e.g  os.path.split('/home/swaroop/byte/code/poem.txt')   結果:('/home/swaroop/byte/code', 'poem.txt')
  • 分離擴展名:os.path.splitext()  把後綴名分開
    • e.g  os.path.splitext('/usr/local/test.py')  結果:('usr/local/test', '.py')
  • 獲取路徑名:os.path.dirname()
  • 獲取絕對路徑:os.path.abspath()
  • 獲取文件名:os.path.basename()
  • 運行shell命令:os.system()
  • 讀取操做系統環境變量HOME的值:os.getenv('HOME')
  • 返回操做系統全部的環境變量:os.environ
>>> os.environ
environ({'ALLUSERSPROFILE': 'C:\\ProgramData', 'APPDATA': 'C:\\Users\\Thinkpad\\AppData\\Roaming', 'COMMONPROGRAMFILES': 'C:\\Program Files\\Common Files', 'COMMONPROGRAMFILES(X86)': 'C:\\Program Files (x86)\\Common Files', 'COMMONPROGRAMW6432': 'C:\\Program Files\\Common Files', 'COMPUTERNAME': 'LAPTOP-KUESMB62', 'COMSPEC': 'C:\\Windows\\system32\\cmd.exe', 'CONFIGSETROOT': 'C:\\Windows\\ConfigSetRoot', 'DRIVERDATA': 'C:\\Windows\\System32\\Drivers\\DriverData', 'FPS_BROWSER_APP_PROFILE_STRING': 'Internet Explorer', 'FPS_BROWSER_USER_PROFILE_STRING': 'Default', 'HOMEDRIVE': 'C:', 'HOMEPATH': '\\Users\\Thinkpad', 'LOCALAPPDATA': 'C:\\Users\\Thinkpad\\AppData\\Local', 'LOGONSERVER': '\\\\LAPTOP-KUESMB62', 'NUMBER_OF_PROCESSORS': '4', 'ONEDRIVE': 'C:\\Users\\Thinkpad\\OneDrive', 'OS': 'Windows_NT', 'PATH': 'D:\\Software\\Anaconda\\Anaconda;D:\\Software\\Anaconda\\Anaconda\\Library\\mingw-w64\\bin;D:\\Software\\Anaconda\\Anaconda\\Library\\usr\\bin;D:\\Software\\Anaconda\\Anaconda\\Library\\bin;D:\\Software\\Anaconda\\Anaconda\\Scripts;C:\\Python\\Scripts\\;C:\\Python\\;C:\\Program Files (x86)\\Intel\\iCLS Client\\;C:\\Program Files\\Intel\\iCLS Client\\;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Program Files\\Intel\\WiFi\\bin\\;C:\\Program Files\\Common Files\\Intel\\WirelessCommon\\;C:\\Program Files (x86)\\Intel\\Intel(R) Management Engine Components\\DAL;C:\\Program Files\\Intel\\Intel(R) Management Engine Components\\DAL;C:\\Program Files (x86)\\Intel\\Intel(R) Management Engine Components\\IPT;C:\\Program Files\\Intel\\Intel(R) Management Engine Components\\IPT;C:\\Windows\\System32\\OpenSSH\\;D:\\Software\\Python解釋器\\Scripts\\;D:\\Software\\Python解釋器\\;C:\\Users\\Thinkpad\\AppData\\Local\\Microsoft\\WindowsApps;;D:\\Software\\VSCode\\Microsoft VS Code\\bin', 'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC;.PY;.PYW', 'PROCESSOR_ARCHITECTURE': 'AMD64', 'PROCESSOR_IDENTIFIER': 'Intel64 Family 6 Model 142 Stepping 9, GenuineIntel', 'PROCESSOR_LEVEL': '6', 'PROCESSOR_REVISION': '8e09', 'PROGRAMDATA': 'C:\\ProgramData', 'PROGRAMFILES': 'C:\\Program Files', 'PROGRAMFILES(X86)': 'C:\\Program Files (x86)', 'PROGRAMW6432': 'C:\\Program Files', 'PROMPT': '$P$G', 'PSMODULEPATH': 'C:\\Program Files\\WindowsPowerShell\\Modules;C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules', 'PUBLIC': 'C:\\Users\\Public', 'SESSIONNAME': 'Console', 'SYSTEMDRIVE': 'C:', 'SYSTEMROOT': 'C:\\Windows', 'TEMP': 'C:\\Users\\Thinkpad\\AppData\\Local\\Temp', 'TMP': 'C:\\Users\\Thinkpad\\AppData\\Local\\Temp', 'USERDOMAIN': 'LAPTOP-KUESMB62', 'USERDOMAIN_ROAMINGPROFILE': 'LAPTOP-KUESMB62', 'USERNAME': 'Thinkpad', 'USERPROFILE': 'C:\\Users\\Thinkpad', 'WINDIR': 'C:\\Windows'})
  • 設置系統環境變量,僅程序運行時有效:os.environ.setdefault('HOME','/home/alex')
  • 給出當前平臺使用的行終止符:os.linesep Windows使用'\r\n',Linux 和 MAC 使用'\n'
>>> os.linesep
'\r\n'
  • 指示你正在使用的平臺:os.name 對於Windows,它是'nt',而對於Linux/Unix用戶,它是'posix'
>>> os.name
'nt'
  • 重命名:os.rename(old, new)
  • 建立多級目錄:os.makedirs(r"C:\python\test")
>>> os.makedirs('test/sdfs/e') #test 不存在時會自動建立
  • 建立單個目錄:os.mkdir("test")
>>> os.mkdir('test/sdfs/e') #test 不存在時沒法建立,只能建立一個
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
FileExistsError: [WinError 183] 當文件已存在時,沒法建立該文件。: 'test/sdfs/e'
  • 獲取文件屬性:os.stat(file)
>>> os.listdir('.')
['.continuum', '.oracle_jre_usage', '.PyCharm2018.3', '.vscode', '3D Objects', 'AppData', 'Application Data', 'Contacts', 'Cookies', 'Desktop', 'Documents', 'Downloads', 'Favorites', 'IntelGraphicsProfiles', 'Links', 'Local Settings', 'MicrosoftEdgeBackups', 'Music', 'My Documents', 'NetHood', 'NTUSER.DAT', 'ntuser.dat.LOG1', 'ntuser.dat.LOG2', 'NTUSER.DAT{bc3b0ccb-3b0e-11e9-ac14-a81e84e70c20}.TM.blf', 'NTUSER.DAT{bc3b0ccb-3b0e-11e9-ac14-a81e84e70c20}.TMContainer00000000000000000001.regtrans-ms', 'NTUSER.DAT{bc3b0ccb-3b0e-11e9-ac14-a81e84e70c20}.TMContainer00000000000000000002.regtrans-ms', 'ntuser.ini', 'OneDrive', 'Pictures', 'PrintHood', 'Recent', 'Saved Games', 'Searches', 'SendTo', 'Templates', 'test', 'Videos', '「開始」菜單']
>>> os.stat('test')
os.stat_result(st_mode=16895, st_ino=12103423998638553, st_dev=1849078143, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1552273101, st_mtime=1552273099, st_ctime=1552273099)
#st_mode:權限 st_ino:字節號 st_dev:文件所在設備ID st_nlink:鏈向此文件的鏈接數(硬鏈接) st_uid:用戶ID st_gid:使用者的團隊ID st_size:文件大小 st_atime:最近存取時間 st_mtime:最近修改時間 st_ctime:最近權限修改時間
  • 修改文件權限與時間戳:os.chmod(file)
  • 終止當前進程:os.exit() #python2 有,python3沒有
  • 獲取文件大小:os.path.getsize(filename)
  • 結合目錄名與文件名:os.path.join(dir,filename)
>>> os.path.join('root','tset','t.py')
'root\\tset\\t.py'
  • 改變工做目錄到dirname:os..chdir(dirname)
>>> os.getcwd()
'C:\\Users\\Thinkpad'
>>> os.chdir('/cmder')
>>> os.getcwd()
'C:\\cmder'
  • 獲取當前終端的大小:os.get_terminal_size()
>>> os.get_terminal_size()
os.terminal_size(columns=120, lines=30)
>>> os.get_terminal_size()#拖動終端,以此來決定在終端上書寫多少東西
os.terminal_size(columns=75, lines=30)
  • 殺死進程:os.kill(10884,signal.SIGKILL)

相關文章
相關標籤/搜索