###### tags: `python` `Road Map`
# Python 入門學習路 (Road Map)
最近更新日期20210108
* [Python 學習](https://hackmd.io/0KEtNeyFRweVdbmxFj54Ww)
入門
*.[Python基礎](https://hackmd.io/@jease0502/python_hackersir_easy?print-pdf#/)
* [Python3 講義目錄](https://hackmd.io/@amostsai/SyLO1JCIb)
老師完整講義
* [VSCODE(VisualStudio Code) 快速鍵](https://hackmd.io/Rnj3NWnmQReCoGDk-PP9lw)
VSCode 常用快速鍵
* [基本語法](https://hackmd.io/wqqgdRhoTfiZbLlxKjkPGw)
註解,print與格式化字串
* [基本語法二](https://hackmd.io/josNVfPITRy0kldhOKUtog)
字串處理
* [Python 資料型別](https://hackmd.io/2Px_QR8kQiemCtFlcGSQdA)
序對(tuple) 、 串列[list] 、 {字典:dict} 與 集合{set}
* [資料型別](https://hackmd.io/uPyBwz1gQLqg671qBjuEpA)
老師講義
* [流程控制](https://hackmd.io/SPef-q1dRNijGLwcFhvXkg)
if、for、while、continue、break、pass 用法
* [除錯與與異常處理](https://hackmd.io/-M9y1nfWTE2PoSAiJOKqlQ)
logging用法(分別寫出log文字檔與console訊息)
* [pip用法與套件簡易說明](https://hackmd.io/5ad9ibM4SzSoNdwFv4J2Cw)
import 用法,各套件簡易說明。
* [SQLite](https://hackmd.io/bImOVzKrTXuquPhZGjYfBQ)
老師講義
* [資料庫處理](https://hackmd.io/UFEJLNmPTZOMi7DB8JNATw)
資料庫連線方法,插入一筆資料,更新資料,插入大量資料,資料庫時間之處理
* [寫入資料庫語法](https://hackmd.io/SVy5uv2KS3irSH5s3mUJmg)
寫入mongodb程式碼,寫入mysql程式碼
* [網頁資料抓取與分析](https://hackmd.io/xZrScthwQdqfIdaIDyYvFA)
用ParseResult物件,取得網址資料;用Beautifulsoup進行複雜網頁分析
* [網路爬蟲](https://hackmd.io/6WspOHeWQeWqMXYFBUDqPA)
使用到的套件,安裝方法
* [物件導向程式設計](https://hackmd.io/TCous9T_S1C9TQnm9vwY5A)
老師講義
* [視窗軟體開發(PyQt5 與 tkinter)](https://hackmd.io/l6i-znrgRv6OtISY4BzEBQ)
* [產生PDF方法一](https://hackmd.io/NNMY2-PVRMSHLrc3jS2KTQ)
* [產生PDF方法二](https://hackmd.io/lI5nbqEMQnifQGRCNBmbeQ)
* [產生PDF方法二](https://hackmd.io/lI5nbqEMQnifQGRCNBmbeQ)
* **內建指令快速架設網站方法**
[Python 3快速建立網頁伺服器 Web server](https://dotblogs.com.tw/funny_dotblog/2019/05/16/python_webserver)
[快速建立簡單網頁伺服器 http websever](https://shengyu7697.github.io/blog/2019/11/27/Python-simple-web-server/)
Python3 語法:切換到要開放的資料夾目錄下輸入下列指令
```
python -m http.server 8080
```
自己寫WebServer 程式碼方法
```=python
# python3-httpserver.py
#!/usr/bin/env python3
-*- coding: utf-8 -*-
import sys
import http.server
from http.server import SimpleHTTPRequestHandler
HandlerClass = SimpleHTTPRequestHandler
ServerClass = http.server.HTTPServer
Protocol = "HTTP/1.0"
if sys.argv[1:]:
port = int(sys.argv[1])
else:
port = 8000
server_address = ('127.0.0.1', port)
HandlerClass.protocol_version = Protocol
httpd = ServerClass(server_address, HandlerClass)
sa = httpd.socket.getsockname()
print("Serving HTTP on", sa[0], "port", sa[1], "...")
httpd.serve_forever()
```
Python2 語法:
```
python -m SimpleHTTPServer
```
自己寫WebServer 程式碼方法
```=python
# python2-httpserver.py
#!/usr/bin/python
# -*- coding: utf-8 -*-
import sys
import BaseHTTPServer
from SimpleHTTPServer import SimpleHTTPRequestHandler
HandlerClass = SimpleHTTPRequestHandler
ServerClass = BaseHTTPServer.HTTPServer
Protocol = "HTTP/1.0"
if sys.argv[1:]:
port = int(sys.argv[1])
else:
port = 8000
server_address = ('127.0.0.1', port)
HandlerClass.protocol_version = Protocol
httpd = ServerClass(server_address, HandlerClass)
sa = httpd.socket.getsockname()
print("Serving HTTP on " + str(sa[0]) + " port " + str(sa[1]) + "...")
httpd.serve_forever()
```
[Python 範例:Python 伺服器程式碼 (server.py)](https://docs.aws.amazon.com/zh_tw/polly/latest/dg/example-Python-server-code.html)
這種架設方法:算是低階的嵌入式網站伺服器, 沒有資安與效能的考量, 只是提供開發測試用的。
可用於個人用於簡單網頁顯示。
若要在商業與生產環境下使用, 建議使用生產等級的網站伺服器: Nginx, Apache,...等等。
相關參考資料
[從範例學程式初階 – Python(1080801-02)](http://webnas.bhes.ntpc.edu.tw/wordpress/archives/13590)
[python-cheatsheet](https://github.com/gto76/python-cheatsheet)
[Python範例](https://cflin.com/wordpress/category/pythoncode) 含有PEP8 PYTHON 編碼規範手冊介紹(程式撰寫風格)
S20200730 By YTC
M20200807,20200814,20200919,20200929,20201005,20201204
M20210102,20210108