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可以读取多个文件的内容,同时提供一些方法让我们知道当前所读取的内容属于哪一个文件
filename: 当前正在读取的文件名
fileno: 文件的描述符
filelineno: 正则读取的行是当前文件的第几行
isfirstline:正则读取的文件是否当前文件的第一行;
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()
原文链接:https://blog.csdn.net/zhengzaifeidelushang/article/details/106273567