與操做系統交互的模塊python
路徑相關的值都應該用常量 : 快捷鍵 Ctrl+shift+ugit
一、查看當前文件的上級目錄的絕對路徑shell
import os # 查看當前文件的上級目錄的絕對路徑 DAY_15 = os.path.dirname(__file__) print(DAY_15) # E:/Python/day15 # 查看當前文件的上級目錄的上級目錄絕對路徑 BASE_PATh = os.path.dirname(DAY_15) print(BASE_PATh) # E:/Python
二、將文件拼接到絕對路徑中bash
# 將文件進行拼接到絕對路徑中 TEXT_PATH = os.path.join(DAY_15,'text.txt','a.py') print(TEXT_PATH) # E:/Python/day15\text.txt\a.py
三、判斷文件或文件夾是否存在,若存在返回值是True,不存在返回值是Falsedom
# 判斷文件或文件夾是否存在,存在返回值是True,不存在的返回值是False print(os.path.exists(TEXT_PATH)) # False print(os.path.exists(DAY_15)) # True # 只能判斷當前文件同級目錄下的文件是否存在 print(os.path.exists('datatime模塊.py')) # True print(os.path.exists('內置函數.py')) # False
四、判斷「文件夾」是否存在,只能判斷文件夾,不能判斷文件是否存在ide
#判斷文件夾是否存在 print(os.path.isdir('os模塊.py')) # False print(os.path.isdir(DAY_15)) # True
五、判斷文件是否存在函數
os.path.isfile()
六、建立文件夾測試
先拼接文件夾到絕對路徑中,而後再用os.mkdir()將拼接的文件夾建立新的文件夾,若存在,會報錯沒法建立idea
# 建立文件夾 FILE_PATH = os.path.join(DAY_15, '測試文件夾') os.mkdir(FILE_PATH)
七、刪除空文件夾spa
刪除絕對路徑中最後一個文件夾,用os.rmdir()
#刪除空文件夾 FILE_PATH = os.path.join(DAY_15, '測試文件夾') os.rmdir(FILE_PATH) os.rmdir('E:\Python\day15\ces')
八、獲取某個文件夾中的全部文件的名字,以列表返回
# 獲取文件夾下的全部文件,以列表返回 PATH_LIST = os.listdir(os.path.dirname(__file__)) print(PATH_LIST) # ['.idea', 'datatime模塊.py', 'os模塊.py', 'random模塊.py', 'time模塊.py']
九、enumerate(可迭代對象) ——>獲得一個對象,對象中是將原來可對象中的每個值變成了一個個元組(索引,元素),如果字典返回的是字典裏全部的key對應序號
res = enumerate(PATH_LIST) print(list(res)) >>> [(0, '.idea'), (1, 'datatime模塊.py'), (2, 'os模塊.py'), (3, 'random模塊.py'), (4, 'time模塊.py')]
例題 :讓用戶選擇文件
while True: # 拿到文件夾下全部文件 PATH_LIST = os.listdir(os.path.dirname(__file__)) res = enumerate(PATH_LIST) # 打印全部的文件,並對應編號 for index, name in res: print(f"編號:{index}, 文件名:{name}") choise = input('請輸入編號:') # 利用反向思惟,不用重複一層套一層if,判斷是否輸入的是數字 if not choise.isdigit(): print("輸入的不是數字!") continue # 判斷是否輸入的是在編號範圍內 choise = int(choise) if choise not in range(len(PATH_LIST)): print("輸入的編號不在範圍內!") continue choise_file = PATH_LIST[choise] # 將選擇的文件拼接到文件中 get_file = os.path.join(os.path.dirname(__file__),choise_file) # 打開文件並讀出文件內容 with open(get_file,'r',encoding='utf-8') as f: print(f.read()) break
方法 | 詳解 |
---|---|
os.getcwd() | 獲取當前工做目錄,即當前python腳本工做的目錄路徑 |
os.chdir("dirname") | 改變當前腳本工做目錄;至關於shell下cd |
os.curdir | 返回當前目錄: ('.') |
os.pardir | 獲取當前目錄的父目錄字符串名:('..') |
os.makedirs('dirname1/dirname2') | 可生成多層遞歸目錄 |
os.removedirs('dirname1') | 若目錄爲空,則刪除,並遞歸到上一級目錄,如若也爲空,則刪除,依此類推 |
os.mkdir('dirname') | 生成單級目錄;至關於shell中mkdir dirname |
os.rmdir('dirname') | 刪除單級空目錄,若目錄不爲空則沒法刪除,報錯;至關於shell中rmdir dirname |
os.listdir('dirname') | 列出指定目錄下的全部文件和子目錄,包括隱藏文件,並以列表方式打印 |
os.remove() | 刪除一個文件 |
os.rename("oldname","newname") | 重命名文件/目錄 |
os.stat('path/filename') | 獲取文件/目錄信息 |
os.sep | 輸出操做系統特定的路徑分隔符,win下爲"",Linux下爲"/" |
os.linesep | 輸出當前平臺使用的行終止符,win下爲"\t\n",Linux下爲"\n" |
os.pathsep | 輸出用於分割文件路徑的字符串 win下爲;,Linux下爲: |
os.name | 輸出字符串指示當前使用平臺。win->'nt'; Linux->'posix' |
os.system("bash command") | 運行shell命令,直接顯示 |
os.environ | 獲取系統環境變量 |
os.path.abspath(path) | 返回path規範化的絕對路徑 |
os.path.split(path) | 將path分割成目錄和文件名二元組返回 |
os.path.dirname(path) | 返回path的目錄。其實就是os.path.split(path)的第一個元素 |
os.path.basename(path) | 返回path最後的文件名。如何path以/或\結尾,那麼就會返回空值。即os.path.split(path)的第二個元素 |
os.path.exists(path) | 若是path存在,返回True;若是path不存在,返回False |
os.path.isabs(path) | 若是path是絕對路徑,返回True |
os.path.isfile(path) | 若是path是一個存在的文件,返回True。不然返回False |
os.path.isdir(path) | 若是path是一個存在的目錄,則返回True。不然返回False |
os.path.join(path1[, path2[, ...]]) | 將多個路徑組合後返回,第一個絕對路徑以前的參數將被忽略 |
os.path.getatime(path) | 返回path所指向的文件或者目錄的最後存取時間 |
os.path.getmtime(path) | 返回path所指向的文件或者目錄的最後修改時間 |