『壹』 python其實很簡單 第十六章 目錄管理
為實現「按名存取」,必須建立文件名與輔存空間中物理地址的對應關系,體現這種對應關系的數據結構稱為文件目錄。文件目錄表目至少要包含文件名、文件的類型、文件的長度、訪問許可權、建立時間、訪問時間和文件存儲地址等內容。通過前面一章的介紹,我們已經知道在文件信息中已經包含了文件名、文件類型訪問許可權等信息,而存儲地址的信息則包含在目錄信息中。
16.1路徑
路徑通常用一個字元串來表示,可以按照路徑信息定位到一個目錄或文件。如:「C:UsersAdministratorPictures1.jpg」這個信息可以非常方便的找到這個圖片文件,「C:UsersAdministratorPictures」這個信息可以幫助我們找到更多的圖片文件。
這里所說的「路徑」和上網時碰到的「地址」含義比較相似,互聯網就相當於將個人電腦可以訪問的范圍擴大了,互聯網中的地址也是對應某一個存儲空間的路徑,按照地址可以訪問互聯網上的信息,就如同按照路徑可以找到計算機中的文件一樣。
在Python中,可以導入 os模塊 來進行目錄操作。
1、獲取當前工作目錄getcwd()函數
例:
import os
print(os.getcwd())
運行結果:
C:
這個路徑是當前Python IDLE所在的地址。
2、獲取文件的絕對路徑abspath()函數
abspath()函數是os模塊的子模塊path提供的一個函數。用法舉例如下:
import os
print(os.path.abspath(r'test.txt'))
運行結果:
C: est.txt
16.2 目錄操作類函數
1、判斷目錄是否存在exists()函數
exists()函數是os模塊的子模塊path中的函數。使用方法舉例如下:
import os
print(os.path.exists(r'C:UsersAdministratorPictures1.jpeg'))
輸出結果:
True
2、創建目錄mkdir()函數和makedirs()函數
mkdir()函數和makedirs()函數都是由os模塊提供的,下面舉例說明用法和區別。
例1:
import os
path='d:test'
if not os.path.exists(path):
os.makedirs(path)
print('該文件目錄創建成功!')
如果目錄d: est已存在,則不再創建;若不存在,則創建。
例2:
import os
path='d:testtest1test11'
if not os.path.exists(path):
os.makedirs(path)
print('該文件目錄創建成功!')
雖然目錄d: est已存在,但可以在其下繼續創建子目錄。上面的代碼可以成功地創建d: est est1 est11目錄。
mkdir()函數和makedirs()函數用法基本一樣,不同之處在於mkdir()函數只能能創建一級目錄。
3、刪除目錄函數rmdir()函數
rmdir()函數是由os模塊提供的。
例如:通過上面的例子已經建立了d: est est1 est11目錄,現在去刪除子目錄test11(此子目錄為空目錄),代碼如下:
import os
os.rmdir('d:testtest1test11')
如果要刪除的目錄非空(其下還包含有文件或文件夾),則不能刪除,並且出現Windows文件操作錯誤的提示(Python是調用操作系統命令完成文件和目錄操作的)。譬如d: est目錄下含有有子目錄,則不能對其進行如下刪除操作。
import os
os.rmdir('d:test')
此時,會出現如下錯誤提示:
Traceback (most recent call last):
File "C:/Users/zym/AppData/Local/Programs/Python/Python39/4.py", line 10, in
os.rmdir('d:test')
OSError: [WinError 145] 目錄不是空的。: 'd:test'
4、刪除非空目錄函數rmtree()函數
rmtree()函數是由Python內置的標准模塊shutil提供的,可以刪除目錄及目錄下的文件和子目錄。如刪除d: est目錄及其下的子目錄和文件,可用如下代碼:
import shutil
shutil.rmtree('d:test')
5、遍歷目錄walk()函數
walk()函數是由os模塊提供的。
語法格式:
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])
其中,top是所要遍歷的目錄的地址;topdown為可選參數,為 True時自上而下遍歷 目錄,為False時自下而上遍歷目錄,默認值為True;onerror為可選參數,用於指定異常處理方式,默認為忽略;followlinks為可選參數,如果為 True,則會遍歷目錄下的快捷方式(linux 下是軟連接 symbolic link )實際所指的目錄(默認關閉),如果為 False,則優先遍歷 top 的子目錄。
該函數的返回值為一個三元組(root,dirs,files)。root 所指的是當前正在遍歷的這個文件夾的本身的地址;dirs 是一個 list ,內容是該文件夾中所有的目錄的名字(不包括子目錄);files 同樣是 list , 內容是該文件夾中所有的文件(不包括子目錄)。
例:遍歷d: est目錄及其子目錄下的所有子目錄和文件:
d: est目錄及其下的子目錄和文件
import os
path='d:test'
tups=os.walk(path) # 函數walk()的返回值為三元組
for root,dirs,files in tups: # 遍歷這個三元組
for name in dirs: #遍歷存放目錄值的元組
print('dir:',os.path.join(root,name))
for name in files: #遍歷存放文件名值的元組
print('file:',os.path.join(root,name))
運行結果如下:
dir: d: est est1
dir: d: est est1 est11
dir: d: est est1新建文件夾
file: d: est est1新建文本文檔.txt
file: d: est est1 est11新建文本文檔.txt
『貳』 Python培訓課程內容有哪些
以下是Python課程內容:
階段一:Python開發基礎
Python開發基礎課程內容包括:計算機硬體、操作系統原理、安裝linux操作系統、linux操作系統維護常用命令、Python語言介紹、環境安裝、基本語法、基本數據類型、二進制運算、流程式控制制、字元編碼、文件處理、數據類型、用戶認證、三級菜單程序、購物車程序開發、函數、內置方法、遞歸、迭代器、裝飾器、內置方法、員工信息表開發、模塊的跨目錄導入、常用標准庫學習,b加密\re正則\logging日誌模塊等,軟體開發規范學習,計算器程序、ATM程序開發等。
階段二:Python高級級編編程&資料庫開發
Python高級級編編程&資料庫開發課程內容包括:面向對象介紹、特性、成員變數、方法、封裝、繼承、多態、類的生成原理、MetaClass、__new__的作用、抽象類、靜態方法、類方法、屬性方法、如何在程序中使用面向對象思想寫程序、選課程序開發、TCP/IP協議介紹、Socket網路套接字模塊學習、簡單遠程命令執行客戶端開發、C\S架構FTP伺服器開發、線程、進程、隊列、IO多路模型、資料庫類型、特性介紹,表欄位類型、表結構構建語句、常用增刪改查語句、索引、存儲過程、視圖、觸發器、事務、分組、聚合、分頁、連接池、基於資料庫的學員管理系統開發等。
階段三:前端開發
前端開發課程內容包括:HTML\CSS\JS學習、DOM操作、JSONP、原生Ajax非同步載入、購物商城開發、Jquery、動畫效果、事件、定時期、輪播圖、跑馬燈、HTML5\CSS3語法學習、bootstrap、抽屜新熱榜開發、流行前端框架介紹、Vue架構剖析、mvvm開發思想、Vue數據綁定與計算屬性、條件渲染類與樣式綁定、表單控制項綁定、事件綁定webpack使用、vue-router使用、vuex單向數據流與應用結構、vuex
actions與mutations熱重載、vue單頁面項目實戰開發等。
階段四:WEB框架開發
WEB框架開發課程內容包括:Web框架原理剖析、Web請求生命周期、自行開發簡單的Web框架、MTV\MVC框架介紹、Django框架使用、路由系統、模板引擎、FBV\CBV視圖、Models
ORM、FORM、表單驗證、Django session & cookie、CSRF驗證、XSS、中間件、分頁、自定義tags、Django
Admin、cache系統、信號、message、自定義用戶認證、Memcached、redis緩存學習、RabbitMQ隊列學習、Celery分布式任務隊列學習、Flask框架、Tornado框架、Restful
API、BBS+Blog實戰項目開發等。
階段五:爬蟲開發
爬蟲開發課程內容包括:Requests模塊、BeautifulSoup,Selenium模塊、PhantomJS模塊學習、基於requests實現登陸:抽屜、github、知乎、博客園、爬取拉鉤職位信息、開發Web版微信、高性能IO性能相關模塊:asyncio、aiohttp、grequests、Twisted、自定義開發一個非同步非阻塞模塊、驗證碼圖像識別、Scrapy框架以及源碼剖析、框架組件介紹(engine、spider、downloader、scheler、pipeline)、分布式爬蟲實戰等。
階段六:全棧項目實戰
全棧項目實戰課程內容包括:互聯網企業專業開發流程講解、git、github協作開發工具講解、任務管理系統講解、介面單元測試、敏捷開發與持續集成介紹、django
+ uwsgi +
nginx生產環境部署學習、介面文檔編寫示例、互聯網企業大型項目架構圖深度講解、CRM客戶關系管理系統開發、路飛學城在線教育平台開發等。
階段七:數據分析
數據分析課程內容包括:金融、股票知識入門股票基本概念、常見投資工具介紹、市基本交易規則、A股構成等,K線、平均線、KDJ、MACD等各項技術指標分析,股市操作模擬盤演示量化策略的開發流程,金融量化與Python,numpy、pandas、matplotlib模塊常用功能學習在線量化投資平台:優礦、聚寬、米筐等介紹和使用、常見量化策略學習,如雙均線策略、因子選股策略、因子選股策略、小市值策略、海龜交易法則、均值回歸、策略、動量策略、反轉策略、羊駝交易法則、PEG策略等、開發一個簡單的量化策略平台,實現選股、擇時、倉位管理、止盈止損、回測結果展示等功能。
階段八:人工智慧
人工智慧課程內容包括:機器學習要素、常見流派、自然語言識別、分析原理詞向量模型word2vec、剖析分類、聚類、決策樹、隨機森林、回歸以及神經網路、測試集以及評價標准Python機器學習常用庫scikit-learn、數據預處理、Tensorflow學習、基於Tensorflow的CNN與RNN模型、Caffe兩種常用數據源製作、OpenCV庫詳解、人臉識別技術、車牌自動提取和遮蔽、無人機開發、Keras深度學習、貝葉斯模型、無人駕駛模擬器使用和開發、特斯拉遠程式控制制API和自動化駕駛開發等。
階段九:自動化運維&開發
自動化運維&開發課程內容包括:設計符合企業實際需求的CMDB資產管理系統,如安全API介面開發與使用,開發支持windows和linux平台的客戶端,對其它系統開放靈活的api設計與開發IT資產的上線、下線、變更流程等業務流程。IT審計+主機管理系統開發,真實企業系統的用戶行為、管理許可權、批量文件操作、用戶登錄報表等。分布式主機監控系統開發,監控多個服務,多種設備,報警機制,基於http+restful架構開發,實現水平擴展,可輕松實現分布式監控等功能。
階段十:高並發語言GO開發
高並發語言GO開發課程內容包括:Golang的發展介紹、開發環境搭建、golang和其他語言對比、字元串詳解、條件判斷、循環、使用數組和map數據類型、go程序編譯和Makefile、gofmt工具、godoc文檔生成工具詳解、斐波那契數列、數據和切片、make&new、字元串、go程序調試、slice&map、map排序、常用標准庫使用、文件增刪改查操作、函數和面向對象詳解、並發、並行與goroute、channel詳解goroute同步、channel、超時與定時器reover捕獲異常、Go高並發模型、Lazy生成器、並發數控制、高並發web伺服器的開發等。
『叄』 python - Poetry介紹
一、簡介
Poetry 是一個Python 中的好用的包管理工具。在 Python 中,打包系統和依賴管理非常復雜:一個項目經常要同時創建多個文件,例如:
setup.py
requirements.txt
setup.cfg
MANIFEST.in
Pipfile
基於此, poetry 將所有的配置都放置在一個 toml 文件中,包括:依賴管理、構建、打包、發布等,可謂是簡單方便。
二、安裝
Poetry 要求 Python 版本為 2.7 或者 3.5+。Poetry 官方提供了一個腳本,可以快速方便地進行安裝。
osx / linux / bashonwindows 安裝:
curl -sSL https://raw.githubusercontent.com/python-poetry/poetry/master/install-poetry.py | python -
windows powershell 安裝:
(Invoke-WebRequest -Uri https://raw.githubusercontent.com/python-poetry/poetry/master/install-poetry.py -UseBasicParsing).Content | python -
Poetry 會被安裝在系統中的如下位置:
$HOME/.local/bin Unix系統
%APPDATA%PythonScripts Windows系統
然後把路徑添加到系統變數 PATH 中,即可使用 poetry 命令調用:
poetry --version
卸載:
python install-poetry.py --uninstall
POETRY_UNINSTALL=1 python install-poetry.py
如果你想要改變安裝的默認路徑,可以設置 POETRY_HOME :
POETRY_HOME=/etc/poetry python install-poetry.py
除了官方的安裝腳本,也可以使用 pipx 或者 pip 進行安裝:
pipx install poetry
pipx upgrade poetry
pipx uninstall poetry
pip install --user poetry
更新:
poetry self update
三、基礎使用
在已有項目中執行:
poetry init
該命令創建了一個pyproject.toml 文件。你可以手動修改 pyproject.toml 文件添加依賴,然後運行:
poetry install
也可以執行 add 命令安裝具體某個模塊並自動添加到 pyproject.toml:
$ poetry add xxxx
默認情況下,poetry會在 {cache-dir}/virtualenvs 下創建虛擬環境,你也可以手動修改該配置項,或者在 pyproject.toml 配置[virtualenvs.in-project] 在你的項目目錄中創建虛擬環境。
你可以使用 run 命令在虛擬環境中運行腳本:
poetry run python your_script.py
或者直接激活你的虛擬環境,新建一個 shell 運行:
poetry shell
只安裝dependencies :
poetry install --no-root
更新所有鎖定版本的依賴:
poetry update
四、命令選項
全局選項:
--verbose (-v|vv|vvv): "-v" 正常輸出, "-vv" 詳細輸出 "-vvv" debug
--help (-h) : 幫助信息
--quiet (-q) : 不輸出任何信息
--ansi: 強制 ANSI 輸出
--no-ansi: 禁止ANSI 輸出
--version (-V): 顯示版本
--no-interaction (-n): 禁止交互詢問
NEW:
poetry new my-package
創建項目模板,項目結構如下所示:
my-package
├── pyproject.toml
├── README.md
├── my_package
│ └── init .py
└── tests
└── init .py
init:創建pyproject.toml文件 。
install:讀取pyproject.toml並安裝依賴,它具有如下這些選項:
--without: 忽略依賴
--with: 安裝可選的依賴
--only: 只安裝指定的依賴
--default: 只安裝默認的依賴
--sync: 同步鎖定的版本至環境中
--no-root: 不安裝根依賴包
--dry-run: 輸出操作但不執行
--extras (-E): 安裝額外的包
update:升級包
poetry update
不指定任何包時,更新所有,也可以指定升級包:
poetry update requests toml
它具有如下選項:
--dry-run : 輸出操作但不執行
--no-dev : 不按照開發依賴
--lock : 只更新鎖定不安裝
add: 添加依賴並安裝
限制范圍:
poetry add penlum@^2.0.5
poetry add "penlum>=2.0.5"
它具有如下選項:
--group (-D): 分組
--editable (-e): 添加到編輯模式
--extras (-E): 添加額外的依賴
--optional: 添加至可選依賴
--python: 指定python版本
--platform: 指定操作系統
--source: 使用源名稱安裝
---allow-prereleases: 接受 prereleases 安裝
--dry-run: 輸出操作但不執行
--lock: 只更新鎖定不安裝
remove:移除依賴
它具有如下選項:
--group (-D): 分組
--dry-run : 輸出操作但不執行
show:列出所有的可安裝的包
如果你想看具體某個包的信息:
poetry show penlum
name : penlum
version : 1.4.2
description : Python datetimes made easy
dependencies:
--without: 忽略依賴
--with: 同時顯示
--only: 只顯示指定的依賴
--default: 只顯示默認的
--no-dev: 不顯示開發的依賴
--tree: 以樹狀形式顯示
--latest (-l): 展示最新的版本
--outdated (-o): 顯示最新版本,但僅適用於過時的軟體包
build:構建
publish:發布
config:配置項
使用方法:
poetry config [options] [setting-key] [setting-value1] ... [setting-valueN]
它具有如下選項:
--unset: 刪除配置項
--list: 展示現在的配置
run:在虛擬環境中執行命令
shell:激活虛擬環境
check:檢查pyproject.toml文件
search:搜索遠程包
lock:鎖定版本
version:顯示版本
export:導出鎖定的文件為其他的格式
poetry export -f requirements.txt --output requirements.txt
它具有如下選項:
--format (-f): 轉換的格式,暫時只支持requirements.txt
--output (-o): 輸出文件名字
--dev: 包括開發的依賴
--extras (-E): 額外的依賴
--without-hashes: 忽略哈希
--with-credentials: 包括合格證書
env:與虛擬環境進行交互
cache:緩存
顯示緩存列表:
poetry cache list
清除緩存:
poetry cache clear pypi --all
plugin:插件
安裝插件:
poetry plugin add poetry-plugin
顯示插件列表:
poetry plugin show
移除插件:
poetry plugin remove poetry-plugin
source: 倉庫源
添加源:
poetry source add pypi-test https://test.pypi.org/simple/
顯示倉庫源列表:
poetry source show
移除:
poetry source remove pypi-test
五、配置
你可以運行config命令進行配置,或者直接修改config.toml文件,這個文件通常位於:
macOS: ~/Library/Application Support/pypoetry
Windows: C:Users<username>AppDataRoamingpypoetry
Unix~/.config/pypoetry
可以使用--local命令對具體項目進行配置:
poetry config virtualenvs.create false --local
配置項:
cache-dir緩存目錄
installer.parallel並行安裝
virtualenvs.create如果不存在,則新建一個虛擬環境
virtualenvs.in-project在項目根目錄創建虛擬環境
virtualenvs.path虛擬環境路徑
virtualenvs.options.always-復制源文件還是創建鏈接到虛擬環境
virtualenvs.options.system-site-packages虛擬環境獲得系統包的許可權
repositories.<name>設置一個新的可選倉庫
六、依賴配置
依賴的配置有很多種寫法:
版本限制:
尖括弧:^1.2 代表 >=1.2.0 <2.0.0
波浪號:~1.2.3 代表 >=1.2.3 <1.3.0
星號:1.* 代表 >=1.0.0 <2.0.0
使用git倉庫:
[tool.poetry.dependencies]
requests = { git = " https://github.com/requests/requests.git " }
使用本地路徑:
[tool.poetry.dependencies]
my-package = { path = "../my-package/", develop = false }
my-package = { path = "../my-package/dist/my-package-0.1.0.tar.gz" }
使用URL:
[tool.poetry.dependencies]
my-package = { url = " https://example.com/my-package-0.1.0.tar.gz " }
python限制:
[tool.poetry.dependencies]
pathlib2 = { version = "^2.2", python = "~2.7" }
環境限制:
[tool.poetry.dependencies]
pathlib2 = { version = "^2.2", markers = "python_version ~= ƈ.7' or sys_platform == 'win32'" }
組合:
[tool.poetry.dependencies]
foo = [
{version = "<=1.9", python = "^2.7"},
{version = "^2.0", python = "^3.4"}
]
如果限制很多,寫成一行不方便閱讀,可以寫成多行:
[tool.poetry.group.dev.dependencies]
black = {version = "19.10b0", allow-prereleases = true, python = "^3.6", markers = "platform_python_implementation == 'CPython'"}
寫成多行後:
[tool.poetry.group.dev.dependencies.black]
version = "19.10b0"
allow-prereleases = true
python = "^3.6"
markers = "platform_python_implementation == 'CPython'"
分組功能:
[tool.poetry.group.test.dependencies]
pytest = "^6.0.0"
pytest-mock = "*"
例如以上,就建立了一個test的組合的依賴。
下面這兩種寫法是等價的:
[tool.poetry.dev-dependencies]
pytest = "^6.0.0"
pytest-mock = "*"
或者:
[tool.poetry.group.dev.dependencies]
pytest = "^6.0.0"
pytest-mock = "*"
以上兩種寫法都聲明了一個dev的組的依賴。
聲明組合是可選的,這在具體的環境中有的特定的用途時很有用:
[tool.poetry.group.docs]
optional = true
[tool.poetry.group.docs.dependencies]
mkdocs = "*"
添加依賴到組中:
poetry add pytest --group test
同步依賴,只使用poetry.lock中的依賴,移除其他不是必須的依賴:
poetry install --sync
七、環境管理
Poetry可以為項目使用獨立的虛擬環境,而不是使用系統安裝的。
切換環境:
poetry env use /full/path/to/python
poetry env use python3.7
poetry env use system
顯示當前激活的環境信息:
poetry env info
運行命令會輸出如下信息:
Virtual environment
Python: 3.7.1
Implementation: CPython
Path: /path/to/poetry/cache/virtualenvs/test-O3eWbxRl-py3.7
Valid: True
System
Platform: darwin
OS: posix
Python: /path/to/main/python
列出所有的虛擬環境列表:
poetry env list
刪除環境:
poetry env remove /full/path/to/python
poetry env remove python3.7
poetry env remove 3.7
poetry env remove test-O3eWbxRl-py3.7
『肆』 你都用Python 來做什麼
當我知道可以做這些之後,我特別想會。因為論文查閱、答案確認查詢;想知道豆瓣8分以上電影,或者穿越類的電影、處理工資數據考核表等。
可以干什麼
1、上學吧答案神器 主要實現的是無限制獲取上學吧網站上的題目答案(繞過 IP 限制),並實現了自動識別驗證碼,只用輸入某個題目的網址,即可一鍵獲取答案,速度非常快。「想要哈哈,自己或者給孩子輔導作業必備啊?」
2、抓取某系統內全部學生姓名學號及選課信息
3、掃描研究生系統上的弱密碼用戶、模擬登錄圖書館系統並自動續借
4、給釣魚網站批量提交垃圾信息 經常會收到含有釣魚網站鏈接的簡訊的,一般都是盜取 QQ 密碼的偏多,其實可以使用 Python 來批量給對方的伺服器提交垃圾數據(需要先抓包),這樣騙子看到信息之後就不知道哪些是真的哪些是假的了,說不定可以解救一部分填了密碼的同學。
5、網易雲音樂批量下載 可以批量下載網易雲音樂熱歌榜的歌曲,可以自己設定數量,速度非常快。
6、批量下載讀者雜志某一期的全部文章
7、 獲取城市PM2.5濃度和排名
8、爬取某網商品價格信息
你都用 Python 來做什麼?
那Python 作為一種功能強大的編程語言,因其簡單易學而受到很多開發者的青睞。那麼,Python 的應用領域有哪些呢?
Python 的應用領域非常廣泛,幾乎所有大中型互聯網企業都在使用 Python 完成各種各樣的任務,例如國外的 Google、Youtube、Dropbox,國內的網路、新浪、搜狐、騰訊、阿里、網易、淘寶、知乎、豆瓣、汽車之家、美團等等。概括起來,Python 的應用領域主要有如下幾個。
Web應用開發
Python 經常被用於 Web 開發,盡管目前 PHP、JS 依然是 Web 開發的主流語言,但 Python 上升勢頭更勁。尤其隨著 Python 的 Web 開發框架逐漸成熟(比如 Django、flask、TurboGears、web2py 等等),程序員可以更輕松地開發和管理復雜的 Web 程序。例如,通過 mod_wsgi 模塊,Apache 可以運行用 Python 編寫的 Web 程序。Python 定義了 WSGI 標准應用介面來協調 HTTP 伺服器與基於 Python 的 Web 程序之間的通信。舉個最直觀的例子,全球最大的搜索引擎 Google,在其網路搜索系統中就廣泛使用 Python 語言。另外,我們經常訪問的集電影、讀書、音樂於一體的豆瓣網(如圖 1 所示),也是使用 Python 實現的。
圖2Python開發的游戲
除此之外,Python 可以直接調用 Open GL 實現 3D 繪制,這是高性能游戲引擎的技術基礎。事實上,有很多 Python 語言實現的游戲引擎,例如 Pygame、Pyglet 以及 Cocos 2d 等。以上也僅是介紹了 Python 應用領域的「冰山一角」,例如,還可以利用 Pygame 進行游戲編程;用 PIL 和其他的一些工具進行圖像處理;用 PyRo 工具包進行機器人控制編程,等等。有興趣的讀者,可自行搜索資料進行詳細了解。