10-包和模組
阿新 • • 發佈:2020-11-19
os模組
- os:operation system
- 主要提供跟作業系統相關的函式
- print(os.name) # nt(Windows)
- print(os.environ) # 環境變數
- print(os.environ.get('PATH')) # 獲取環境變數中的路徑
- curdir:current directory 當前目錄(當前資料夾)
- .表示當前目錄
- ..表示上一級目錄
- print(os.curdir)
- print(os.getcwd())
- 獲取當前目錄(路徑)
- 絕對路徑:從磁碟開始的完整路徑
- 相對路徑:從當前目錄開始的路徑
- 獲取當前目錄(路徑)
- print(os.listdir(r'C:\Users\86188\Desktop\Python_Study'))
- 獲取指定目錄下的資料夾和檔案的名稱,會得到一個列表
- mkdir():make directory 在當前目錄下建立(資料夾)目錄
- os.mkdir('羅志祥')
- os.makedirs('薛之謙/演員/醜八怪') # 可以建立多層目錄
- 刪除目錄,刪除的目錄不能是非空目錄
- os.rmdir('羅志祥')
- 重新命名,對資料夾或檔案重新命名
- os.rename('薛之謙', '李榮浩')
- 刪除檔案
- os.remove('abc.py')
- 刪除檔案
- os.removedirs()可刪除多級空目錄
- 檔案屬性
- print(os.stat(r'01_os_Module1.py')) # 寫路徑時儘量在前面加個r
os.path模組(指向了os)
-
abspath():獲取指定檔案的絕對路徑
- print(os.path.abspath('01_os_Module1.py'))
-
join():拼接多個路徑
- print(os.path.join(r'C:\Users\86188\Desktop\Python_Study\Day10\02_decorator_parameter.py', 'hello.py'))
-
split(): 分割,把檔案路徑和檔名分割
- print(os.path.split(r'C:\Users\86188\Desktop\Python_Study\Day11\01_os_Module1.py'))
-
splittext():把檔案的名稱和副檔名分割
- print(os.path.splittext('hello.py'))
-
isdir():判斷是否為資料夾(目錄)
- print(os.path.isdir(my_dir))
-
isfile():判斷是否為資料夾(目錄)
- print(os.path.isfile(my_dir))
-
isabs():判斷是否為絕對路徑
- os.path.isabs(path)
-
exists():判斷資料夾/檔案是否存在
- print(os.path.exists(my_dir))
-
getsize():獲取檔案大小,不能獲取資料夾大小
- print(os.path.getsize(my_file))
-
dirname():父目錄
- print(os.path.dirname(my_file))
-
basename():獲取檔名
- print(os.path.basename(my_file))
-
當前檔案路徑,注意區別
-
print(__file__)
-
print(os.path.abspath(_file_))
-
# 當前檔案路徑 print(__file__) # C:/Users/86188/Desktop/Python_Study/Day11/02_os_Module2.py print(os.path.abspath(__file__)) # C:\Users\86188\Desktop\Python_Study\Day11\02_os_Module2.py
-
-
dir():獲取某個模組(Python檔案)中的所有屬性和函式名
- import math
- print(dir(math))
-
os.path.getctime() # 獲取檔案或資料夾的建立時間
-
os.path.getatime() # 獲取檔案或資料夾的最後訪問時間
-
os.path.getmtime() # 獲取檔案或資料夾的最後修改時間
查詢某個目錄下的某種型別檔案
-
# 查詢某個目錄下的py檔案和txt檔案 import os def get_file(path): # 判斷path是否存在 if not os.path.exists(path): print('路徑不存在') return # 1.獲取當前path下的所有子檔案和子資料夾名稱 file_list = os.listdir(path) # print(file_list) # 2.獲取子檔案的路徑 for file in file_list: file_path = os.path.join(path, file) # print(file_path) # 3.是否為檔案且是否為.py或.txt檔案 if os.path.isfile(file_path): if file_path.endswith('.py') or file_path.endswith('.txt'): # 列印檔名 print(file) get_file(r'C:\Users\86188\Desktop\Python_Study\Day10')
- 首先要判斷路徑是否存在
- 注意利用join拼接獲取檔案的絕對路徑
遍歷目錄
-
import os # 深度遍歷 # 遍歷目錄 def search_dir(path): filename_list = os.listdir(path) for filename in filename_list: # file_path:每個子檔案或子資料夾的絕對路徑 file_path = os.path.join(path, filename) # 如果是檔案 if os.path.isfile(file_path): print('檔名:', filename) # 如果是目錄 elif os.path.isdir(file_path): print('目錄名:', filename) # 遞迴遍歷當前目錄的子目錄 search_dir(file_path) search_dir(r'C:\Users\86188\Desktop\Python_Study\Day11\newdir')
- 深度遍歷
- 注意使用join拼接獲取檔案的絕對路徑
- 使用遞迴完成
包和模組
- 模組的種類
- 1.內建模組,標準模組
- 2.自定義模組
- 3.第三方模組
- 匯入模組
- import
- import os
- import os, math # 不建議這麼寫
- form...import...
- 模糊匯入
- *表示萬用字元
- from hello import *
- 精確匯入:只匯入需要的變數或函式或類
- from hello import age, login
- 模糊匯入
- import
- 模組的用法
- 用法:模組名.函式名()
- math.pow(2, 3)
- 別名
- import random as rd
- print(rd.random())
- 用法:模組名.函式名()
包
- 就是一個包含_init_.py的資料夾
- 匯入
- 格式:import 包.模組
- import aaa.bbb
- print(aaa.bbb.sex)
- from...import...
- from aaa import bbb # 從import後面開始
- print(bbb.sex)
- 推薦使用下面的方式匯入包中的模組
- from aaa.bbb import sex
- print(sex)
- 格式:import 包.模組
第三方包管理
- 安裝第三方包
- 方式一:在Pycharm中安裝
- a.在需要安裝的包名上按alt+enter選擇'install package request'
- b.在file->settings=>project=>點選右上角的+進行安裝
- 方式二:使用命令安裝pip
- pip命令 -V 檢視pip的版本
- pip install package 安裝包(預設會從國外的網站下載安裝)
- pip install package -i 國內源(不會被牆)-豆瓣源&清華源
- pip uninstall package 解除安裝包
- pip list 列出(檢視)所有的包
- pip freeze 列出(檢視)你安裝的包(除了自帶的pip, setuptools)
- pip show package 顯示包詳情
- 方式一:在Pycharm中安裝
name屬性
- __name__的作用:如果不想讓模組中的某些程式碼執行,可以通過屬性僅僅呼叫程式中的一部分功能,寫在if判斷中的程式碼只有當前模組被執行的時候才會被執行,檢測到是其他的檔案在使用當前的模組,則if語句中的程式碼不會被執行
- if __name__ == "_main_":
- print(__name__) # __main__