我們可以很簡單的使用 python -m SimpleHTTPServer 快速搭建一個http服務,提供一個文件瀏覽的web服務。
命令如下:
python -m SimpleHTTPServer 8000
以命令執行路徑為
共享目錄。
使用上面的命令可以把當前目錄發布到8000端口。
但是這條命令是當前運行的,不是后台運行的,也就是說如果Ctrl + C,則該端口就會關閉。
python -m SimpleHTTPServer 8000 &
在上述命令的最后加一個 & ,則該命令產生的進程在后台運行,不會影響當前終端的使用(我們在只有一個bash的環境下)。
生成的新的進程為當前bash的子進程,所以,當我們關閉當前bash時,相應的子進程也會被kill掉,這也不是我們想要的結果。
nohup python -m SimpleHTTPServer 8000 &
在命令的開頭加一個nohup,忽略所有的掛斷信號,如果當前bash關閉,則當前進程會掛載到init進程下,成為其子進程,這樣即使退出當前用戶,其8000端口也可以使用。
瀏覽器訪問:http://{ip}:8000/
curl -L http://{ip}:8000/test.sh
Python的-m參數
1、在命令行中啟動Python腳本的時候,經常會用到-m參數,那么-m起了什么作用呢?
2、先看看 python --help 給出的信息:
run library module as a script (terminates option list)
意思是將庫中的python模塊用作腳本去運行。
3、常用例子
python -m SimpleHTTPServer #python2中啟動一個簡單的http服務器 python -m http.server #python3中啟動一個簡單的http服務器
4、將模塊當做腳本去啟動有什么用?
- python xxx.py
- python -m xxx.py
這是兩種加載py文件的方式:
1叫做直接運行
2相當於import,叫做當做模塊來啟動
不同的加載py文件的方式,主要是影響sys.path這個屬性。sys.path相當於Linux中的PATH
>>> import sys >>> sys.path ['', 'D:\\Python3\\lib\\site-packages\\django-1.10.1-py3.5.egg', 'D:\\Python3\\l ib\\site-packages\\psycopg2-2.6.2-py3.5-win32.egg', 'D:\\Python3\\python35.zip', 'D:\\Python3\\DLLs', 'D:\\Python3\\lib', 'D:\\Python3', 'D:\\Python3\\lib\\site -packages']
這就是當前Python解析器運行的環境,Python解析器會在這些目錄下去尋找依賴庫。