python—sys模块之获取参数的操作
作者:shang_feng_wei 发布时间:2022-10-09 04:18:18
sys模块:全称system,指的是解释器。
常用操作,用于接收系统操作系统调用解释器传入的参数
1、 sys.argv
获取脚本传递的所有参数,返回一个列表。列表中的所有元素均为脚本传递的参数。
sys.argv[0] # 脚本传递的第一个参数,固定为脚本名称,可以通过次方式获得脚本名称
可以使用索引依次获得脚本传递的其他参数
2、 sys.version
获取解释器的版本信息,返回一个字符串。根据python版本编写符合不同版本的程序 使程序可兼容
3.6.4 (default, Aug 10 2018, 11:14:49)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]
可以通过字符串的切片特性得到解释器的版本号: print(sys.version[:5]
import sys
print(sys.version)
print(type(sys.version))
print(sys.version[:5])
#输出结果:
3.6.4 (default, Aug 10 2018, 11:14:49)
[GCC 4.8.5 20150623 (Red Hat 4.8.5-11)]
<class 'str'>
3.6.4
3、 sys.platform
获取当前操作系统。可以判断当前所处的系统环境,实现跨平台:
示例:
if sys.platform == 'linux':
os.system(linux系统命令)
else:
os.system(其他系统命令)
应用练习:
编写脚本:compare.py。再命令行中运行 python 文件1 文件2 输出显示两个文件的不同之处。
mport difflib
import sys
parameter = sys.argv
with open(parameter[1])as f1,open(parameter[2])as f2:
file1 = f1.read().splitlines(keepends=True)
file2 = f2.read().splitlines(keepends=True)
diff = difflib.Differ()
diff_result = diff.compare(file1,file2)
print(''.join(list(diff_result)))
执行结果:
[kiosk@foundation47 time]$ python3 compare.py /public/passwd1 /public/passwd2
- root:x:0:0:root:/root:/bin/bash
+ rooter:x:0:0:rooter:/rooter:/bin/bash
? ++ ++ ++
bin:x:1:1:bin:/bin:/sbin/nologin
+ daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
- lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
- operator:x:11:0:operator:/root:/sbin/nologin
+ operator:x:11:0:operator:/rooter:/sbin/nologin
? ++
- mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
games:x:12:100:games:/usr/games:/sbin/nologin
补充:python 中 使用sys模块 获取运行脚本时在命令行输入的参数
在python项目的开发的过程中, 经常需要运行各种python脚本, 有时候还需要根据不同的使用情况输入不同的参数, 如果每次都去编辑一下脚本那就太麻烦,太耗费时间了, 这时就可以使用Python自带的sys模块进行处理, 运行脚本时, 通过sys获取在命令行中输入的参数,极大的方便的我们的开发, 提高开发效率
一个简单的demo如下
输入:
from sys import argv
print(argv[0], argv[1])
print(argv)
终端中运行脚本:
(py3) jinchengxie@192 ~/Desktop/project/test_dir python test_123.py 1 1
输出:
test_123.py 1
['test_123.py', '1', '1']
使用python解释器运行脚本时, 将会获取python 字符后所有的变量, 返回到列表argv中, 通过下标或者进行遍历就可以取出参数了.
来源:https://blog.csdn.net/shang_feng_wei/article/details/91345529


猜你喜欢
- 一直以来,jQuery是我最喜欢的框架之一。1月14号 1.4 Released版本发布后,就迫不及待去了解了一下1.4版本对比以往1.3.
- 关于django models中添加字段的一个小节,记录下django的models中已经写好了字段,可是后面我又想在添加一些字段,于是就在
- 本是一个自己知道的问题,还是差点踩坑(差点忘了,还好上线前整理上线点时想起来了),特此记录下来为什么要更新自增id我是因为历史业务上的坑,导
- 首先,我需要强调下,这篇主旨是揭示堆表的删除记录找回的原理,我所考虑的方面并不适用于每个人的每种情况,望大家见谅~ 很多朋友认为数据库在简单
- 丢弃现有MySQL的表是很容易的。但是需要非常小心,删除任何现有的一个表后将无法恢复,因为数据丢失。语法:下面是通用的SQL语法丢弃(删除)
- 在我们的日常生活工作中,经常会遇到需要上传日志的场景,比如多台机器运行同一个程序,并且需要记录每台机器程序产生的日志,根据相关关键词告警,或
- EMS-员工信息管理系统MySQL学习之基础操作总结MySQL学习之基础命令实操总结创建ems库show databases;
- 问:如何在SQL Enterprise Manager version 6.5下操作SQL Server 6.0的服务器?答:在使用SQL
- 微信链接分享给好友时能够自定义标题、简介和logo,现将ThinkPHP5集成JS-SDK实现微信自定义分享功能的过程整理成文。Jssdk类
- 随着业务量的增长,可能需要对表进行拆分来提高性能。下面这个例子是将www.jb51.net的users表拆分成10个表ttlsa_user_
- Python自带的pdb库,发现用pdb来调试程序还是很方便的,当然了,什么远程调试,多线程之类,pdb是搞不定的。用pdb调试有多种方式可
- mysql> select binary 'ABCD'='abcd' COM1, 'ABCD&
- 在大型商业应用中,数据的异地容灾备份十分重要,也必不可少。笔者根据自己的实践经验,设计了一套简洁地实现异地数据自动备份的方法,可供数据库管理
- 在国内外大中型数据库管理系统中,把ORACLE作为数据库管理平台的用户比较多。RACLE 不论是数据库管理能力还是安全性都是无可非
- 本文实例讲述了MySQL定时备份数据库操作。分享给大家供大家参考,具体如下:1. 查看mysqldumproot@laowang:/# wh
- 突然收到MySQL报警,从库的数据库挂了,一直在不停的重启,打开错误日志,发现有张表坏了。innodb表损坏不能通过repair table
- 简介这是实验室2018年底招新时的考核题目,使用Python编写一个能够完成基本对战的五子棋游戏。面向新手。程序主要包括两个部分,图形创建与
- 比如input中的数据和data中的msg双向绑定。那么我们可以 判断先把msg以空格拆分成数组,然后拼接起来,判断字符串的长度
- 目录1、字典的定义字典和列表的区别:字典的基本使用2、循环遍历3、字符串的定义4、字符串的常用操作字符串 查找和替换字符串 文本对齐演练去除
- 理解切片基本用法:首先需要明白,可迭代对象,按照正数索引(正序)是从0开始的,按照负数索引(逆序)是从-1开始的。>>>