python-sys模块

Posted wd404

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python-sys模块相关的知识,希望对你有一定的参考价值。

1、介绍

sys.py文件,对应sys模块,是python的一个标准模块。

该模块提供对解释器使用或维护的一些变量的访问,以及与解释器强烈交互的函数

2、模块变量

2.1 argv

  • list[str]类型,用于接收命令行参数
  • py文件的执行,可以看做是python指令,其后指定py文件以及其它参数
  • 元素0是启动py文件的路径,pycharm默认是绝对路径指向py文件,而如果是直接命令行执行python指令,则可能为相对路径
  • 其它参数
    • 之间可以由空格进行分隔,各参数分别作为str类型的元素
    • 如果连续多个空格,其作用是相当于一个空格
    • 单引号无法使参数本身包含空格,或者说单引号只能作为普通字符,而不具备结构解释
    • 双引号可以作为结构解释字符,使参数包含空格
>python test.py abc  "dd "
[\'test.py\', \'abc\', \'dd \'] 

>python test.py abc  \'dd \'
[\'test.py\', \'abc\', "\'dd", "\'"]

2.2 modules

  • 获取所有已经导入的模块
  • dictstr:module类型,str为模块名称,module即模块对象

2.3 获取信息

import sys

print(sys.hexversion)    # 获取python解释程序的版本值,十六进制格式
print(sys.version)        # 获取python解释器的版本信息
print(sys.path)            # 获取模块的搜索路径,包括当前的启动环境和系统PYTHONPATH环境变量的值
print(sys.maxsize)        # 
print(sys.maxunicode)    # 最大的unicode值
print(sys.platform)        # 操作系统平台名称

print(sys.getwindowsversion())    # windows版本
print(sys.getdefaultencoding())    # 当前所默认的字符编码格式
print(sys.getfilesystemencoding())    # 系统编码格式

"""
50921968
3.9.1 (tags/v3.9.1:1e5d33e, Dec  7 2020, 17:08:21) [MSC v.1927 64 bit (AMD64)]
[\'...涉及敏感信息,不展示\']
9223372036854775807
1114111
win32
sys.getwindowsversion(major=10, minor=0, build=19045, platform=2, service_pack=\'\')
utf-8
utf-8
"""

 3、函数

3.1 exit

print(\'abc\') # 执行
sys.exit(0)  # 程序结束
print(\'zzz\') # 不执行
  • 实际测试,exit函数只要调用机会结束程序。无论是设置0、1、-1、None或者不设值
  • 有说法是设置为0,表示正常退出
app = QApplication([])
...
sys.exit(app.exec_())
  • 这是pyqt常用的代码,app.exec_()实际就是数值0

Python-sys模块,异常

习题1:题目:给一个不多于5位的正整数,要求:一、求它是几位数,二、逆序打印出各位数字。

#encoding=utf-8

while True:

try:

num=int(raw_input("input a number not more than 5 digits:"))

except:

"Plese input again:"

else:

if len(str(num))<=5:

break

 

print len(str(num))

print str(num)[::-1]

 

 

 

习题2:题目:请输入星期几的第一个字母来判断一下是星期几,如果第一个字母一样,则继续判断第二个字母。

#encoding=utf-8

 

week={‘m‘:‘monday‘,‘tu‘:‘tuesday‘,‘w‘:‘wednesday‘,‘th‘:‘thursday‘,‘f‘:‘friday‘,‘sa‘:‘saturday‘,‘s‘:‘sunday‘}

 

prefix=raw_input("input the first letter:")

 

if week.has_key(prefix.lower()):

print week[prefix.lower()]

else:

prefix2=raw_input("input the second letter:")

if week.has_key(prefix.lower()+prefix2.lower()):

print week[prefix.lower()+prefix2.lower()]

 

 

习题3:两个 3 行 3 列的矩阵,实现其对应位置的数据相加,并返回一个新矩阵:

X = [[12,7,3],
    [4 ,5,6],
    [7 ,8,9]]

Y = [[5,8,1],
    [6,7,3],
    [4,5,9]]

#encoding=utf-8

 

x = [[12,7,3],

[4 ,5,6],

[7 ,8,9]]

 

y = [[5,8,1],

[6,7,3],

[4,5,9]]

 

z = [[0,0,0],

[0,0,0],

[0,0,0]]

#print x,y,z

 

for i in range(len(x)):

print "i:",i

for j in range(3):

print "j:",j

print "x[%s][%s]:%s"%(i,j,x[i][j])

print "y[%s][%s]:%s"%(i,j,y[i][j])

z[i][j]=x[i][j]+y[i][j]

print "z[%s][%s]:%s"%(i,j,z[i][j])

print z

 

c:\Python27\Scripts>python task_test.py

i: 0

j: 0

x[0][0]:12

y[0][0]:5

z[0][0]:17

j: 1

x[0][1]:7

y[0][1]:8

z[0][1]:15

j: 2

x[0][2]:3

y[0][2]:1

z[0][2]:4

i: 1

j: 0

x[1][0]:4

y[1][0]:6

z[1][0]:10

j: 1

x[1][1]:5

y[1][1]:7

z[1][1]:12

j: 2

x[1][2]:6

y[1][2]:3

z[1][2]:9

i: 2

j: 0

x[2][0]:7

y[2][0]:4

z[2][0]:11

j: 1

x[2][1]:8

y[2][1]:5

z[2][1]:13

j: 2

x[2][2]:9

y[2][2]:9

z[2][2]:18

[[17, 15, 4], [10, 12, 9], [11, 13, 18]]

 

一行搞定:

>>> [[x[i][j]+y[i][j] for i in range(3)] for j in range(3)]

[[17, 10, 11], [15, 12, 13], [4, 9, 18]]

 

Sys.argv练习把所有的输入参数的字母个数统计出来

#encoding=utf-8

 

import sys

 

print "The command line arguments are:"

list=sys.argv

num=0

print list

for i in list[1:]:

if (i>=‘a‘ and i<=‘z‘) or (i>=‘A‘ and i<=‘Z‘):

num+=1

print num

 

c:\Python27\Scripts>python task_test.py A B c d

The command line arguments are:

[‘task_test.py‘, ‘A‘, ‘B‘, ‘c‘, ‘d‘]

4

 

第二道题:你输入的参数全部是数字,计算所有数字参数的累计和

 

#encoding=utf-8

 

import sys

 

print "The command line arguments are:"

list=sys.argv

sum=0

print list

for i in list[1:]:

 

sum+=float(i)

print "sum:",sum

c:\Python27\Scripts>python task_test.py 1 1 1.1

The command line arguments are:

[‘task_test.py‘, ‘1‘, ‘1‘, ‘1.1‘]

sum: 3.1

 

按照吴老思路:

#encoding=utf-8

 

import sys

 

if len(sys.argv[1:])>=1:

sum=0

else:

sum = None

 

for i in sys.argv[1:]:

try:

sum+=float(i)

except:

continue#这里的意思是出现非数字的地方不抱错,

print sum

 

 

 

#encoding=utf-8

 

import sys

import os

 

def readfile(filename):

f=open(filename)

while True:

line=f.readline()

if len(line.strip())==0:

break

print line

f.close()

 

 

print "sys.argv[0]--------",sys.argv[0]

print "sys.argv[1]--------",sys.argv[1]

print "sys.argv[2]--------",sys.argv[2]

 

if len(sys.argv)<2:

print "No action specified."

sys.exit()

 

if sys.argv[1].startswith(‘--‘):

option = sys.argv[1][2:]

if option == ‘version‘:

print "version 1.2"

elif option ==‘help‘:

print """

This program.........

--version:prints the version number

--help : display this help"""

else:

print "unknow option"

sys.exit()

else:

for file in sys.argv[1:]:

#print file

readfile(file)

 

 

sys.stdin.readline() == raw_input()

>>> raw_input()

sd

‘sd‘

>>> sys.stdin.readline()

sadf

‘sadf\n‘

>>>

 

#coding=utf-8

import os

import sys

 

counter=1

 

while True:

line=sys.stdin.readline()

if not line.strip():

break

print "%s:%s"%(counter,line)

counter +=1

 

 

 

>>> import sys

>>> sys.version

‘2.7.14 (v2.7.14:84471935ed, Sep 16 2017, 20:25:58) [MSC v.1500 64 bit (AMD64)]‘

>>>

 

>>> sys.stdout.write("sdfsdffffffffff\n")

Sdfsdffffffffff

 

 

#coding=utf-8

import os

import sys

for i in range(3):

sys.stdout.write("gloryroad")

print ‘\n‘,‘_‘*60,‘\n‘

 

for i in range(3):

sys.stderr.write("error error")

 

将标准输出到屏幕,改为输出到文件里

>>> import os

>>> import sys

>>> sys.stdout=open("d:\\a.txt","w")

>>> print "love you"

>>> "love you"

>>> fp

>>> print "hello"

>>> stdout.flush()

Traceback (most recent call last):

File "<stdin>", line 1, in <module>

NameError: name ‘stdout‘ is not defined

>>> print ""

>>> sys.stdout.flush()

>>> print

 

 

 







以上是关于python-sys模块的主要内容,如果未能解决你的问题,请参考以下文章

python-sys模块

Python-sys模块,异常

python-sys模块

python- sys.argv CLI 参数的帮助程序列表

模块讲解---time模块,datetime模块,random模块,hashlib模块和hmac模块,typing模块,requests模块,re模块

Python 常用模块 -- collections模块,time模块,random模块,os模块,sys模块