python sys库

python sys库

argv

sys库下有一个名为argv的列表,该列表保存了所有的命令行参数。argv列表中的第一个元素是命令行程序的名称,其余的命令行参数以字符串的形式保存在该列表中。

# 程序名test.py
from __future__ import print_function
import sys
print(sys.argv)

#执行命令
python test.py localhost 3306
['dddddd.py', 'localhost', '3306']
import sys
import os

def main():
    # sys.argv.append(" ")
    filename = sys.argv[0]
    print(filename)
    #D:/project/bianzu/sys_test.py
    print("打印参数列表:",sys.argv)
    #['D:/project/bianzu/sys_test.py']
    if not os.path.isfile(filename):
        raise SystemExit(filename + ' does not exists')
    elif not os.access(filename,os.R_OK):
        raise SystemExit(filename + ' is not accessible')
    else:
        print(filename + " is accessible")

if __name__ == '__main__':
    main()

在这里插入图片描述

sys文件描述符

sys库中有三个文件描述符,分别是stdin、stdout和stderr,这三个文件描述符分表代表着标准输入、标准输出和错误输出。

读取标准输入:sys.stdin

sys.stdin从标准输入中读取内容,然后打印到命令行终端

import sys
for line in sys.stdin:
    # end= "" 不换行
    print(line,end=" ")

在这里插入图片描述
sys.stdin.readlines函数将标准输入的内容读取到一个列表中

import sys

def get_content():
    return sys.stdin.readlines()

print(get_content())

在这里插入图片描述

多文件处理fileinput

fileinput是python语言的标准库,提供了比sys.stdin更加通用的功能,使用fileinput可以依次读取命令行参数中给出的多个文件。fileinput会遍历sys.argv[1:]列表,并按行一次读取列表中的文件。如果该列表为空,则fileinput默认读取标准输入中的内容

import fileinput

for line in fileinput.input():
    print(line,end="")

在这里插入图片描述
filename可以读取多个文件的内容,同时提供一些方法让我们知道当前所读取的内容属于哪一个文件

  1. filename: 当前正在读取的文件名
  2. fileno: 文件的描述符
  3. filelineno: 正则读取的行是当前文件的第几行
  4. isfirstline:正则读取的文件是否当前文件的第一行;
  5. isstdin fileinput: 正则读取文件还是直接从标准输入读取内容
import fileinput

for line in fileinput.input():
    meta = [fileinput.filename(),fileinput.fileno(),fileinput.filelineno(),fileinput.isfirstline(),fileinput.isstdin()]
    print(*meta)
    #依次是文件名  文件描述符  文件第几行  是否是第一行  是否从标准输入读取
    #D:\tmp\test2.txt 3 1 True False
    #hi,happy everyday
    #
    print(line)

在这里插入图片描述

标准输出:sys.stdout

sys.stdout与sys.stderr向标准输出和错误输出中输出内容,默认情况向“hello" 和”world"都会被输出到命令行,可以通过重定向来将"hello"输出到标准输出,“world"被输出到错误输出

import sys
sys.stdout.write("hello")
sys.stderr.write('world')

在这里插入图片描述
Python程序执行失败,需要在标准错误中输出错误信息,然后以非零的返回码退出程序

import sys
sys.stderr.write('error message')
sys.exit(1)

在这里插入图片描述
示例:


import sys
import os

def main():
    filename = sys.argv[1]
    print(filename)
    #判断文件是否存在,不存在直接退出
    if not os.path.isfile(filename):
        raise SystemExit(filename + ' does not exists')
        # 判断文件是否具有读权限
    elif not os.access(filename,os.R_OK):
        os.chmod(filename, 777)
    else:
        with open(filename) as f:
            print(f.read())

if __name__ == "__main__":
    main()

在这里插入图片描述
在这里插入图片描述

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章