python3 sys模块
sys模塊就是用來管理Python自身運行環境,Python就是解釋器,運行在操作系統上面的程序,所以sys包,可以用來管理Python運行的參數,比如內存,文件大小等等.
另外一個重要功能就是可以和自己進行命令交互
| sys.path | 返回Python 解釋器自動查找所需模塊的路徑的列表 |
| sys.path.append(path) | 添加路徑,用于調用模塊 |
| sys.argv | 打印腳本名和腳本所帶的所有參數 |
| sys.exit(n) | 退出程序,正常退出時exit(0),其他為異常 |
| sys.stdout | 標準輸出流 |
| sys.stdout.write(str) | 向標準輸出寫入內容 |
| sys.stdin | 標準輸入流 |
| sys.stdin.readline() | 從標準輸入讀一行,會讀取末尾的換行符。其中默認輸入的格式是字符串,如果是int,float類型則需要強制轉換。 |
| sys.stderr | 標準錯誤流 |
sys.path
1. 什么是模塊?
把定義的變量和方法存放在文件中,為一些腳本或者交互式的解釋器實例使用,這個文件被稱為模塊。
- 模塊是一個包含所有你定義的函數和變量的文件,其后綴名是.py。
- 模塊可以被別的程序引入,以使用該模塊中的函數等功能。
- 一個模塊只會被導入一次。
2. 當使用import語句時,Python解釋器是怎么找的對應的文件的?
當解釋器遇到 import 語句,Python會在指定的搜索路徑下搜索對應的模塊(.py文件),如果找到就會被導入,找不到就會報錯。
3.搜索路徑
搜索路徑存放在sys模塊的path變量中
- 搜索路徑是在Python編譯或安裝的時候確定的,安裝新的庫應該也會修改。搜索路徑被存儲在sys模塊中的path變量
sys.path 輸出是一個列表,指定模塊的搜索路徑,可以將寫好的模塊放在得到的某個路徑下,就可以在程序中import時正確找到。
- 其中第一項是空串’’,代表當前目錄,指示Python首先搜索當前目錄中的模塊。
- 如果在當前目錄下存在與要引入模塊同名的文件,就會把要引入的模塊屏蔽掉。
添加自己的搜索目錄方法
sys.path.append(path)
添加路徑,用于調用模塊。這種方法是運行時修改,腳本運行后就會失效
sys.path.append('/Users/michael/my_py_scripts')sys.argv
在外部向程序內部傳遞參數,保存了腳本名和參數列表
print(sys.argv) #打印腳本名和腳本所帶的所有參數 print(sys.argv[0]) #打印腳本所跟的第0個參數 print(sys.argv[1]) #打印腳本所跟的第0個參數運行:
python 1.py argv1 # 結果: [1.py,argv1] 1.py argv1sys.exit(n)
執行到主程序末尾,解釋器自動退出,但是如果需要中途退出程序,可以調用sys.exit函數,帶有一個可選的整數參數返回給調用它的程序,表示你可以在主程序中捕獲對sys.exit的調用。(0是正常退出,其他為異常)
import sysdef exitfunc(value):print valuesys.exit(0)print "hello"try:sys.exit(1) except SystemExit,value:exitfunc(value)運行結果:
hello 1sys.stdout/sys.stderr/sys.stdin
stdin , stdout , 以及stderr 變量包含與標準I/O 流對應的流對象. 如果需要更好地控制輸出,而print 不能滿足你的要求, 它們就是你所需要的. 你也可以替換它們, 這時候你就可以重定向輸出和輸入到其它設備( device ), 或者以非標準的方式處理它們
當我們在程序中print(val)時,就相當于我們把東西塞進sys.stdout管道里面即:print = sys.stdout.write(val+’\n’)
stdout就像是一個類文件對象,因為你可以將他賦值給任意的一個文件對象,重定向輸出
import sys print('222') __console = sys.stdout # 用于后期還原 with open('log.txt', 'a') as file:sys.stdout = file #把文對象賦給 sys.stdout,那么 print 調用的就是文件對象的 write 方法print('1111') # 這個print并不會打印到控制臺上sys.stdout = __console #如果之后要恢復,再把管道改為原來就行運行結果:
- 控制臺輸出:222
- 創建一個log.txt,里面打開內容是1111
sys.stdout.write(str)
向標準輸出寫入內容,例如:sys.stdout.write(“hello world”),屏幕輸出 hello world
sys.stdin.readline()
從標準輸入讀一行,會讀取末尾的換行符。其中默認輸入的格式是字符串,如果是int,float類型則需要強制轉換。
import sys name=sys.stdin.readline() print(name) # 就是打印你剛輸入的內容更多參考sys模塊文檔
總結
以上是生活随笔為你收集整理的python3 sys模块的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python3 open()内置函数
- 下一篇: Python 中 pass的使用