腳本是用 python解釋器來編程,如果從 Python解釋器退出再進入,那麼你定義的所有的方法和變量就都消失了。為此 Python提供了一個辦法,把這些定義存放在文件中,為一些腳本或者交互式的解釋器實例使用,這個文件被稱為模塊。
模塊是一個包含所有你定義的函數和變量的文件,其後綴名是.py。模塊可以被別的程序引入,以使用該模塊中的函數等功能。這也是使用 python標準庫的方法。
簡單的來說,模塊,是用一段代碼實現了某個功能的代碼集合,本質上是一個py文件。
類似於函數式編程和面向過程編程,函數式編程則完成一個功能,其他代碼用來調用即可,提供了代碼的重用性和代碼間的耦合。而對於一個複雜的功能來,可能需要多個函數才能完成(函數又可以在不同的.py文件中),n個 .py 文件組成的代碼集合就稱為模塊。
如:os 是系統相關的模塊;file是文件操作相關的模塊
內置模塊:os.remove() 刪除文件 os.unlink() 刪除文件 os.rename() 重命名文件 os.listdir() 列出指定目錄下所有文件 os.chdir() 改變當前工作目錄os.getcwd() 獲取當前文件路徑os.mkdir() 新建目錄os.rmdir() 刪除空目錄(刪除非空目錄, 使用shutil.rmtree())os.makedirs() 創建多級目錄os.removedirs() 刪除多級目錄os.stat(file) 獲取文件屬性os.chmod(file) 修改文件權限os.utime(file) 修改文件時間戳os.name(file) 獲取作業系統標識os.system() 執行作業系統命令os.execvp() 啟動一個新進程os.fork() 獲取父進程ID,在子進程返回中返回0os.execvp() 執行外部程序腳本(Uinx)os.spawn() 執行外部程序腳本(Windows)os.access(path, mode) 判斷文件權限(詳細參考cnblogs)os.wait() 暫時未知os.path模塊:os.path.split(filename) 將文件路徑和文件名分割(會將最後一個目錄作為文件名而分離)os.path.splitext(filename) 將文件路徑和文件擴展名分割成一個元組os.path.dirname(filename) 返回文件路徑的目錄部分os.path.basename(filename) 返回文件路徑的文件名部分os.path.join(dirname,basename) 將文件路徑和文件名湊成完整文件路徑os.path.abspath(name) 獲得絕對路徑os.path.splitunc(path) 把路徑分割為掛載點和文件名os.path.normpath(path) 規範path字符串形式os.path.exists() 判斷文件或目錄是否存在os.path.isabs() 如果path是絕對路徑,返回Trueos.path.realpath(path) os.path.relpath(path[, start]) os.path.normcase(path) os.path.isdir() 判斷name是不是一個目錄,name不是目錄就返回falseos.path.isfile() 判斷name是不是一個文件,不存在返回falseos.path.islink() 判斷文件是否連接文件,返回booleanos.path.ismount() 指定路徑是否存在且為一個掛載點,返回booleanos.path.samefile() 是否相同路徑的文件,返回booleanos.path.getatime() 返回最近訪問時間 浮點型os.path.getmtime() 返回上一次修改時間 浮點型os.path.getctime() 返回文件創建時間 浮點型os.path.getsize() 返回文件大小 字節單位os.path.commonprefix(list) os.path.lexists os.path.expanduser(path) os.path.expandvars(path) os.path.sameopenfile(fp1, fp2) os.path.samestat(stat1, stat2) os.path.splitdrive(path) os.path.walk(path, visit, arg) os.path.supports_unicode_filenames()例:
即在一個新建的文件裡面,繼續建文件夾。
import ostry: name = "python3" count = 1 for i in range(6): os.makedirs("%s/first%d"%(name,count)) count += 1except Exception as e: print(e)
運行結果:
os.listdir() 、os.path.isdir()讀取目錄下文件名並列印出非文件夾的文件內容
import ostry: path = "./python3/first1" files = os.listdir(path) for i in files: print(i) if not os.path.isdir(i): f = open(path + "/" + i ,"r") for line in f: print(line.strip()) except Exception as e: print(e)
運行結果:
121.txt111116666.txtwenjianjia[Errno 13] Permission denied: './python3/first1/wenjianjia'二、sys
Python的sys模塊提供訪問由解釋器使用或維護的變量的接口,並提供了一些函數用來和解釋器進行交互,操控Python的運行時環境。
下面就來詳細介紹下該模塊中常用的屬性和方法。
sys.argv 命令行參數List,第一個元素是程序本身路徑 sys.path 返回模塊的搜索路徑,初始化時使用PYTHONPATH環境變量的值 sys.modules.keys() 返回所有已經導入的模塊列表sys.modules 返回系統導入的模塊欄位,key是模塊名,value是模塊 sys.exc_info() 獲取當前正在處理的異常類,exc_type、exc_value、exc_traceback當前處理的異常詳細信息sys.exit(n) 退出程序,正常退出時exit(0) sys.exit()系統返回值sys.hexversion 獲取Python解釋程序的版本值,16進位格式如:0x020403F0sys.version 獲取Python解釋程序的版本信息sys.platform 返回作業系統平臺名稱sys.stdout 標準輸出sys.stdout.write(『aaa『) 標準輸出內容sys.stdout.writelines() 無換行輸出sys.stdin 標準輸入sys.stdin.read() 輸入一行sys.stderr 錯誤輸出sys.exc_clear() 用來清除當前線程所出現的當前的或最近的錯誤信息 sys.exec_prefix 返回平臺獨立的python文件安裝的位置 sys.byteorder 本地字節規則的指示器,big-endian平臺的值是『big『,little-endian平臺的值是『little『 sys.copyright 記錄python版權相關的東西 sys.api_version 解釋器的C的API版本 sys.version_info 『final『表示最終,也有『candidate『表示候選,表示版本級別,是否有後繼的發行 sys.getdefaultencoding() 返回當前你所用的默認的字符編碼格式 sys.getfilesystemencoding() 返回將Unicode文件名轉換成系統文件名的編碼的名字 sys.builtin_module_names Python解釋器導入的內建模塊列表 sys.executable Python解釋程序路徑 sys.getwindowsversion() 獲取Windows的版本 sys.stdin.readline() 從標準輸入讀一行,sys.stdout.write(「a」) 屏幕輸出asys.setdefaultencoding(name) 用來設置當前默認的字符編碼(詳細使用參考文檔) sys.displayhook(value) 如果value非空,這個函數會把他輸出到sys.stdout(詳細使用參考文檔)sys.stdout.flush()1、動態對象
sys.argv 傳遞給程序的命令行參數列表;其中,sys.argv[0]表示腳本名稱,各個參數均為字符串類型。
寫一個腳本,內容如下:
import sys# filename:argv_test.pyfor i in range(len(sys.argv)): print('argv{0}: type is {1}, value is {2}'.format(i, type(sys.argv[i]), sys.argv[i]))
返回結果:
argv0: type is <class 'str'>, value is 』程序本身路徑,這裡不顯示出來了『在命令行下運行該腳本,並提供幾個參數
python argv_test.py 1 a 2 b 3 c輸出:
argv0: type is <class 'str'>, value is argv_test.pyargv1: type is <class 'str'>, value is 1argv2: type is <class 'str'>, value is aargv3: type is <class 'str'>, value is 2argv4: type is <class 'str'>, value is bargv5: type is <class 'str'>, value is 3argv6: type is <class 'str'>, value is csys.stdout.write 和 print效果基本一樣
import sys,timefor i in range(100): sys.stdout.write('>') #print('>',end='') time.sleep(0.05) sys.stdout.flush() #刷新運行結果:
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>三、執行系統命令
可以執行shell命令的模塊有:os.system()
import osos.system('dir')運行結果: