系统工具

来源:互联网 发布:直播平台系统源码 编辑:程序博客网 时间:2024/05/14 17:35

命令行参数

一个简单的自定义分页脚本:

# -*- coding: utf-8 -*-def more(text, numline=15):    lines = text.splitlines()   # 将字符串的每一行作为列表元素放入列表中    while lines:        chunck = lines[:numline]        lines = lines[numline:]        for line in chunck:            print(line+'\n')        if lines and input('More?') not in ['Y', 'y']:  # 等待用户输入是否翻页            breakif __name__ == '__main__':    import sys    more(open(sys.argv[1]).read(), 5)   # 显示命令行中文件的页面内容

在打开文件时,我使用了系统工具sys.argv[1]来获取文件路径,也就是通过命令行参数来获取用户想要分页显示的文件,那么问题来了,我们应该怎么输入这个命令行参数呢?

首先我们应该了解sys.argv,argv是存放每个命令行参数的list,按照输入的顺序来进行储存,即第一个参数为argv[0],第二个为argv[1]…

这里写图片描述

以本题的命令行参数为例,该命令参数一共有2个,即python命令后的more.py和more.txt,argv[0]为more.py,argv[1]为more.txt,代码中我们使用的路径是argv[1],所以就是除脚本名本身的第一个参数,这样我们就能从大致明白命令行参数的输入和读取了。

值得注意的是,两个参数之间、参数和命令之间都要通过空格来分隔(若参数中本身就带有空格,则参数必须用一对双引号括起来),并不是通过“ -”来分隔参数,我就是因为使用UNIX的命令“ls -l”等用多了,导致认为命令行参数应该使用空格+“-”来分隔从而出错。

我第一次输入的是“python more.py -more.txt”,则变成了查找”-more“文件。如果是以“-”为前缀的参数,放在命令后面,则变成了选项,必须为单字符或者数字。
这里写图片描述

第一个命令中,系统把-more当作了文件名处理;第二个命令中,找不到名为ore的module,显然系统把-m当作了选项处理。

—— 一个简单的小错误,当作我写博客的开始吧,以后尽量把每个有价值的错误通过写博客的方式研究透并且记住。博客更新不定期,小错误多就更新快,大错误研究时间长肯定就会间隔时间长

原创粉丝点击