在編寫Python程序的時候,可能須要和操做系統進行交互,好比獲取某個目錄下的內容、更改運行目錄、更改環境變量等操做。在Python中有兩個模塊將這些問題完美解決,一塊兒看看哇!html
os模塊提供一個和操做系統的接口,想要徹底瞭解它,須要查看它的官方文檔:https://docs.python.org/3.5/library/os.htmlpython
這裏列出一些經常使用的方法:linux
In [3]: import os # 導入os模塊 In [4]: os.sep # 該操做系統特定的路徑分隔符 Out[4]: '/' In [5]: os.linesep # 該操做系統的行分隔符 Out[5]: '\n' In [6]: os.pathsep # 該操做系統用於分割文件的分隔符 Out[6]: ':' In [7]: os.name # 返回當前系統所使用的平臺(win返回nt,linux返回posix Out[7]: 'posix' In [8]: os.environ # 輸出系統環境變量
In [9]: import os In [10]: os.getcwd() # 獲取當前工做目錄 Out[10]: '/Users/minutesheep' In [11]: os.pardir # 輸出上級目錄 '..' Out[11]: '..' In [12]: os.curdir # 輸出當前目錄 '.' Out[12]: '.' In [13]: os.mkdir('test') # 建立一個文件夾,只能建立一個 In [15]: os.makedirs('test1/test2/test3') # 遞歸建立文件夾 In [16]: os.listdir() # 列出當前目錄全部文件 In [17]: os.rmdir('test') # 刪除一個空文件夾,只能刪除一個 In [19]: os.removedirs('test1/test2/test3') # 遞歸刪除空文件夾,若是上級文件夾也爲空,也刪除 In [20]: os.chdir('..') # 改變工做目錄 In [21]: os.getcwd() # 能夠看到改變了 Out[21]: '/Users' In [24]: os.system('touch test.py') # 執行系統命令,這裏建立一個新的文件,成功則返回0 Out[24]: 0 In [26]: os.stat('test.py') # 查看文件狀態 Out[26]: os.stat_result(st_mode=33188, st_ino=2252266, st_dev=16777223, st_nlink=1, st_uid=501, st_gid=20, st_size=0, st_atime=1549423963, st_mtime=1549423963, st_ctime=1549423963) In [27]: os.rename('test.py','new.py') # 對文件更名 In [28]: os.remove('new.py') # 刪除一個文件
In [29]: import os In [30]: os.system('touch test.py') # 建立一個新文件用於操做 Out[30]: 0 In [31]: os.mkdir('test') # 建立一個文件夾用於操做 In [34]: abspath = os.path.abspath('test.py') # 返回文件的絕對路徑 In [35]: abspath Out[35]: '/Users/minutesheep/test.py' In [37]: os.path.split(abspath) # 將一個文件的絕對路徑分隔爲元組形式,一個是目錄,一個是文件名 Out[37]: ('/Users/minutesheep', 'test.py') In [38]: os.path.dirname(abspath) # 返回路徑的上級目錄 Out[38]: '/Users/minutesheep' In [39]: os.path.basename(abspath) # 返回文件名,若是路徑以/結尾,則返回空 Out[39]: 'test.py' In [40]: os.path.exists(abspath) # 判斷路徑是否存在 Out[40]: True In [41]: os.path.isabs(abspath) # 判斷路徑是否爲絕對路徑 Out[41]: True In [42]: os.path.isfile(abspath) # 判斷路徑是否爲文件 Out[42]: True In [43]: os.path.isdir('test') # 判斷路徑是否爲文件夾 Out[43]: True
想要徹底瞭解它,請查看其官方文檔:< a href="https://docs.python.org/3.5/library/sys.html">https://docs.python.org/3.5/library/sys.html架構
這裏只記錄一些經常使用方法:app
In [1]: import sys # 導入sys模塊 In [2]: sys.argv # 輸出命令行參數列表,第一個元素爲當前程序自己 Out[2]: ['/Users/minutesheep/.pyenv/versions/3.5.2/bin/ipython'] In [3]: sys.version # 輸出Python版本 Out[3]: '3.5.2 (default, Feb 3 2019, 22:37:21) \n[GCC 4.2.1 Compatible Apple LLVM 10.0.0 (clang-1000.10.44.4)]' In [4]: sys.path # 輸出模塊的搜索路徑,這個是最經常使用的! In [5]: sys.platform # 返回操做系統平臺名稱 Out[5]: 'darwin'
在寫一個項目時,不可能只有一個程序文件,每每含有許多個不一樣的程序文件,這些程序文件不能都放在同一個文件夾,須要對這些文件進行歸類整理。一般一個項目有可執行文件、測試文件、源代碼文件、配置文件、日誌文件、讀我文件,這些文件應當有詳細的分類,建議你們整理成以下目錄樹結構:測試
# 以SpeakLanguage項目爲例: SpeakLanguage # 項目名 ├── README # 讀我文件 ├── bin # 執行目錄 │ └── speak.py # 執行文件 ├── conf # 配置文件目錄 │ ├── conf1.cfg # 配置文件1 │ └── conf2.cfg # 配置文件2 ├── log # 日誌目錄 │ └── log.log # 日誌 ├── requirements.txt # 本項目須要的模塊 └── speak_language # 源代碼目錄,一般與項目名相同 ├── chinese.py # 源代碼1 ├── english.py # 源代碼2 ├── main.py # 源代碼入口 └── test # 測試目錄,裏面含有測試文件
1 # bin/speak.py 2 3 import os 4 import sys 5 6 BASE_DIR = os.path.dirname(os.path.dirname( 7 os.path.abspath(__file__))) # 獲取項目目錄 8 9 sys.path.append(BASE_DIR) # 將項目目錄添加到模塊的搜索列表裏 10 11 if __name__ == '__main__': 12 from speak_language.main import run # 從源代碼入口程序main.py中導入run方法 13 14 run() # 執行
1 # speak_language/chinese.py 2 3 def chinese(): 4 print('我是小綿羊')
1 # speak_language/english.py 2 3 def english(): 4 print('I am MinuteSheep')
# speak_language/main.py from speak_language import chinese from speak_language import english def run(): chinese.chinese() english.english()
1 # requirements.txt 2 3 將須要的安裝的模塊列在此文件中
# README 程序說明: xxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxx -------------------------- 項目環境介紹: xxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxx -------------------------- 須要的模塊: xxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxx -------------------------- 項目目錄樹: xxxxxxxxxxx xxxxxxxxxxx xxxxxxxxxxx -------------------------- 做者:MinuteSheep 聯繫方式:xxxxxx
# 執行結果 我是小綿羊 I am MinuteSheep