python之SYS
sys模块
sys.argv 命令行参数List,第一个元素是程序本身路径 sys.exit(n) 退出程序,正常退出时exit(0) sys.version 获取Python解释程序的版本信息 sys.maxint 最大的Int值 sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值 sys.platform 返回操作系统平台名称 sys.stdout.write('please:') val = sys.stdin.readline()[:-1]
sys.argv: 实现从程序外部向程序传递参数。 sys.exit([arg]): 程序中间的退出,arg=0为正常退出。 sys.getdefaultencoding(): 获取系统当前编码,一般默认为ascii。 sys.setdefaultencoding(): 设置系统默认编码,执行dir(sys)时不会看到这个方法,在解释器中执行不通过,可以先执行reload(sys),在执行 setdefaultencoding('utf8'),此时将系统默认编码设置为utf8。(见设置系统默认编码 ) sys.getfilesystemencoding(): 获取文件系统使用编码方式,Windows下返回'mbcs',mac下返回'utf-8'. sys.path: 获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到。 sys.platform: 获取当前系统平台。 sys.stdin,sys.stdout,sys.stderr: stdin , stdout , 以及stderr 变量包含与标准I/O 流对应的流对象. 如果需要更好地控制输出,而print 不能满足你的要求, 它们就是你所需要的. 你也可以替换它们, 这时候你就可以重定向输出和输入到其它设备( device ), 或者以非标准的方式处理它们
sys.argv
功能:在外部向程序内部传递参数
示例:sys.py
import sys print( sys.argv[0]) print(sys.argv[1])
运行:
# python sys.py argv1 sys.py argv1
自己动手尝试一下,领悟参数对应关系
sys.exit(n)
功能:执行到主程序末尾,解释器自动退出,但是如果需要中途退出程序,可以调用sys.exit函数,带有一个可选的整数参数返回给调用它的程序,表示你可以在主程序中捕获对sys.exit的调用。(0是正常退出,其他为异常)
示例:exit.py
#!/usr/bin/env python import sys def exitfunc(value): print value sys.exit(0) print ("hello") try: sys.exit(1) except SystemExit,value: exitfunc(value) print ("come?")
运行:
# python exit.py hello 1
sys.path
功能:获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下,就可以在程序中import时正确找到。
示例:
Microsoft Windows [版本 6.1.7601] 版权所有 (c) 2009 Microsoft Corporation。保留所有权利。 F:\python从入门到放弃\7.12>python Python 3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:54:40) [MSC v.1900 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>> import sys >>> sys.path ['', 'D:\\Program Files (x86)\\python36\\python36.zip', 'D:\\Program Files (x86) \\python36\\DLLs', 'D:\\Program Files (x86)\\python36\\lib', 'D:\\Program Files (x86)\\python36', 'D:\\Program Files (x86)\\python36\\lib\\site-packages'] >>>
sys.path.append("自定义模块路径")
sys.modules
功能:sys.modules
是一个全局字典,该字典是python启动后就加载在内存中。每当程序员导入新的模块,sys.modules
将自动记录该模块。当第二次再导入该模块时,python会直接到字典中查找,从而加快了程序运行的速度。它拥有字典所拥有的一切方法。
示例:modules.py
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 import sys 4 print(sys.modules.keys())
result
"D:\Program Files (x86)\python36\python.exe" F:/python从入门到放弃/7.12/sys_module.py dict_keys(['builtins', 'sys', '_frozen_importlib', '_imp', '_warnings', '_thread', '_weakref', '_frozen_importlib_external', '_io', 'marshal', 'nt', 'winreg', 'zipimport', 'encodings', 'codecs', '_codecs', 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_weakrefset', 'site', 'os', 'errno', 'stat', '_stat', 'ntpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', 'sysconfig', 'sitecustomize']) Process finished with exit code 0
for example
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 import sys 4 import time 5 print(sys.modules.keys())
results:
"D:\Program Files (x86)\python36\python.exe" F:/python从入门到放弃/7.12/sys_module.py dict_keys(['builtins', 'sys', '_frozen_importlib', '_imp', '_warnings', '_thread', '_weakref', '_frozen_importlib_external', '_io', 'marshal', 'nt', 'winreg', 'zipimport', 'encodings', 'codecs', '_codecs', 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_weakrefset', 'site', 'os', 'errno', 'stat', '_stat', 'ntpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', 'sysconfig', 'sitecustomize', 'time']) Process finished with exit code 0
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 import sys 4 import time 5 print(sys.modules.keys()) 6 print(sys.modules.values()) 7 print(sys.modules['time'])
result:
"D:\Program Files (x86)\python36\python.exe" F:/python从入门到放弃/7.12/sys_module.py dict_keys(['builtins', 'sys', '_frozen_importlib', '_imp', '_warnings', '_thread', '_weakref', '_frozen_importlib_external', '_io', 'marshal', 'nt', 'winreg', 'zipimport', 'encodings', 'codecs', '_codecs', 'encodings.aliases', 'encodings.utf_8', '_signal', '__main__', 'encodings.latin_1', 'io', 'abc', '_weakrefset', 'site', 'os', 'errno', 'stat', '_stat', 'ntpath', 'genericpath', 'os.path', '_collections_abc', '_sitebuiltins', 'sysconfig', 'sitecustomize', 'time']) dict_values([<module 'builtins' (built-in)>, <module 'sys' (built-in)>, <module '_frozen_importlib' (frozen)>, <module '_imp' (built-in)>, <module '_warnings' (built-in)>, <module '_thread' (built-in)>, <module '_weakref' (built-in)>, <module '_frozen_importlib_external' (frozen)>, <module 'io' (built-in)>, <module 'marshal' (built-in)>, <module 'nt' (built-in)>, <module 'winreg' (built-in)>, <module 'zipimport' (built-in)>, <module 'encodings' from 'D:\\Program Files (x86)\\python36\\lib\\encodings\\__init__.py'>, <module 'codecs' from 'D:\\Program Files (x86)\\python36\\lib\\codecs.py'>, <module '_codecs' (built-in)>, <module 'encodings.aliases' from 'D:\\Program Files (x86)\\python36\\lib\\encodings\\aliases.py'>, <module 'encodings.utf_8' from 'D:\\Program Files (x86)\\python36\\lib\\encodings\\utf_8.py'>, <module '_signal' (built-in)>, <module '__main__' from 'F:/python从入门到放弃/7.12/sys_module.py'>, <module 'encodings.latin_1' from 'D:\\Program Files (x86)\\python36\\lib\\encodings\\latin_1.py'>, <module 'io' from 'D:\\Program Files (x86)\\python36\\lib\\io.py'>, <module 'abc' from 'D:\\Program Files (x86)\\python36\\lib\\abc.py'>, <module '_weakrefset' from 'D:\\Program Files (x86)\\python36\\lib\\_weakrefset.py'>, <module 'site' from 'D:\\Program Files (x86)\\python36\\lib\\site.py'>, <module 'os' from 'D:\\Program Files (x86)\\python36\\lib\\os.py'>, <module 'errno' (built-in)>, <module 'stat' from 'D:\\Program Files (x86)\\python36\\lib\\stat.py'>, <module '_stat' (built-in)>, <module 'ntpath' from 'D:\\Program Files (x86)\\python36\\lib\\ntpath.py'>, <module 'genericpath' from 'D:\\Program Files (x86)\\python36\\lib\\genericpath.py'>, <module 'ntpath' from 'D:\\Program Files (x86)\\python36\\lib\\ntpath.py'>, <module '_collections_abc' from 'D:\\Program Files (x86)\\python36\\lib\\_collections_abc.py'>, <module '_sitebuiltins' from 'D:\\Program Files (x86)\\python36\\lib\\_sitebuiltins.py'>, <module 'sysconfig' from 'D:\\Program Files (x86)\\python36\\lib\\sysconfig.py'>, <module 'sitecustomize' from 'D:\\Program Files\\JetBrains\\PyCharm 2017.3.5\\helpers\\pycharm_matplotlib_backend\\sitecustomize.py'>, <module 'time' (built-in)>]) <module 'time' (built-in)> Process finished with exit code 0
1 #!/usr/bin/env python 2 # -*- coding: utf-8 -*- 3 import sys 4 import time 5 print(sys.modules.keys()) 6 print(sys.modules.values()) 7 print(sys.modules['time']) 8 9 10 11 # import sys 12 # print(sys.argv) 13 # 14 # if sys.argv[1]=='post': 15 # print('执行post操作') 16 # 17 # elif sys.argv[1]=='download': 18 # print('执行下载操作') 19 20 # print(sys.argv) 21 22 23 24 25 # def test(): 26 # if len(sys.argv)==1: 27 # print('hello,world!') 28 # elif len(sys.argv)==2: 29 # print('hello,%s!'%sys.argv[1]) 30 # 31 # else: 32 # print('输入参数已经超过一个了') 33 # 34 # test() 35 36 37 # 38 # import sys 39 # print( sys.argv[0]) 40 # print(sys.argv[1]) 41 42 #!/usr/bin/env python3 43 # -*- coding: utf-8 -*- 44 45 # ' a test module ' 46 # 47 # __author__ = 'Michael Liao' 48 # 49 # import sys 50 # 51 # def test(): 52 # args = sys.argv 53 # if len(args)==1: 54 # print('Hello, world!') 55 # elif len(args)==2: 56 # print('Hello, %s!' % args[1]) 57 # else: 58 # print('Too many arguments!') 59 # 60 # if __name__=='__main__': 61 # test()
sys.stdin\stdout\stderr
功能:stdin , stdout , 以及stderr 变量包含与标准I/O 流对应的流对象. 如果需要更好地控制输出,而print 不能满足你的要求, 它们就是你所需要的. 你也可以替换它们, 这时候你就可以重定向输出和输入到其它设备( device ), 或者以非标准的方式处理它们
转载:http://www.cnblogs.com/cherishry/p/5725184.html
#-*- coding:utf-8 -*- import sys # # print(sys.path) # print(sys.modules.keys()) # print(sys.modules.values()) # print(sys.modules['sys']) # import os if sys.platform=='win32': os.system('dir') else: os.system('ls') # print(sys.platform) # def exitfunc(value): # print(value) # sys.exit(0) # # print('hello') # # try: # sys.exit(1) # except SystemExit as value: # exitfunc(value) # # print('come') #os 模块是和系统shell 进行交互 #sys 模块是和python解释器进行交互 #print(help(sys)) # # print(sys.argv) # #sys.argv # # print(sys.argv[0]) # print(sys.argv[1]) # # def post(): # print('ok') # # # # def download(): # print('执行下载功能') # # # if sys.argv[1]=='post': # print('执行post上传功能') # post() # # elif sys.argv[1]=='download': # download()