Skip to content

Latest commit

 

History

History
333 lines (235 loc) · 6.5 KB

084-698722-列表_python_系统_sys_命令行参数列表_argv.sy.md

File metadata and controls

333 lines (235 loc) · 6.5 KB
show version enable_checker
step
1.0
true

列表 - 系统命令行参数

回忆

  • 上次了解了列表的下标索引
    • 可以用中括号 索引到 相应的元素
    • 还可以 替换相应的元素
    • 索引本质是 __getitem()__ 方法
  • 还可以用 index函数 找到某对象的位置
    • 如果 列表中 有多个指定元素
    • 可以通过 index函数的start和end参数 来指定位置
  • 列表的索引 还有 什么实际的应用 吗?🤔

命令的参数

  • ls命令可以查询文件夹下的内容
    • 默认参数是pwd
    • 当前文件夹

图片描述

  • 可以查询到当前目录下有三个文件夹
    • Code
    • Desktop
    • golang

增加参数

  • ls 后面加空格 可以增加参数
  • ls命令
    • 后面 加上一个参数
      • Desktop

图片描述

  • 查询 Desktop文件夹下 有什么

  • ls命令 后面还可以

    • 加上 两个参数
      • Desktop
      • golang

ls命令配合多个参数

  • 分别查询两个文件夹
    • 先查询 Desktop 下内容
    • 再查询 golang 下有什么

图片描述

  • python3命令
    • 可以有参数吗?

参数

  • python3命令
    • 后面也可以跟参数
  • 首先的参数
    • 就是要执行的py文件
    • 比如下面的命令
python3 test.py
python3 main.py
  • python3 是命令
    • 可以运行 test.py
    • 也可以运行 main.py
  • test.py 或者 main.py 就是
    • python3 命令的参数
  • 那python3命令
    • 也可以 有个参数吗?

多个参数

  • python3命令 有两个 参数
    • write.py
    • oeasy.txt
python3 write.py oeasy.txt
  • 可以编写write.py内容
    • 然后 在命令行中
    • 指定输出文件名
      • oeasy.txt

销售苹果

  • 我想做一个水果销售的程序

图片描述

  • 命令行中告诉我
    • 水果
    • 数量
  • 我来计算结果
python3 shopping.py apple 3
python3 shopping.py banana 5
  • 这种参数有什么意义吗?

参数的意义

  • 比如 我要
    • 计算苹果或者香蕉总量的价格
  • 原来 需要把 这个苹果和香蕉的数量
    • 在py文件中修改
    • 保存之后再执行

图片描述

  • 但是 现在 通过使用命令行 参数
    • 可以在命令行上
    • 动态地将 参数传递给 py文件
python3 shopping.py apple 5
  • 计算 5个苹果的价格
python3 shopping.py banana 6
  • 或者计算6根香蕉的价格
  • 那我在py文件中
    • 如何得到系统shell中
    • 传给python3的参数呢?
  • 搜索帮助

搜索

图片描述

搜索结果

图片描述

  • 需要引入sys包
    • 并使用sys.argv来接受参数
  • 来看看这个
    • sys.argv 具体是什么

python程序

  • 直接输出
    • sys.argv
import sys
print(sys.argv)
  • 回忆 % 含义
    • % 代表着 当前vim所编辑的缓存
    • !python3 % 就相当于
    • 在shell 运行下面这个命令
python3 shopping.py

尝试运行

图片描述

  • 运行结果

图片描述

  • 输出了 参数列表
    • 列表中 只有一个列表项
    • 就是 当前文件的文件名
  • 如果 给他更多 参数呢?

更多参数

  • w|!python3 % apple 5
    • % 代表当前文件缓存
    • 即是 shopping.py

图片描述

  • 完整命令为
python3 shopping.py apple 5
  • 运行结果

图片描述

  • 可以 查询帮助吗?

帮助文档

import sys
help(sys)
  • 去游乐场

图片描述

查询结果

  • 能看到
    • argv是个 sys模块中的 列表
    • 列表项 是个空串

图片描述

  • 可以操控 这个列表吗?

python程序

import sys
args = sys.argv
print("len", len(args))
print("type", type(args))
print(args)
  • :w|!python3 % apple 5

图片描述

  • 可以去掉
    • 列表中的shopping.py 吗?

python程序

import sys
args = sys.argv
args.remove(args[0])
print("len", len(args))
print("type", type(args))
print(args)
  • 运行结果

图片描述

  • 可以让这个程序
    • 根据 参数来 运算吗?

计划流程

  • 不要翻页

图片描述

  • 试着写出程序

完成程序

import sys
args = sys.argv
fruit = sys.argv[1]
amount = int(sys.argv[2])
if fruit == "apple":
    sum = amount * 1
    print("Sum of",amount, "apples are", sum)
elif fruit == "banana":
    sum = amount * 0.5
    print("Sum of",amount, "bananas are", sum)
else:
    print("There is no price of",fruit)
  • :wq
    • 从python3 退回到 shell
  • 带参数运行
    • python3 shopping.py apple 30
    • python3 shopping.py orange 130
  • 运行结果

图片描述

  • 使用参数 这一功能
    • 是什么时候开始有的呢?

溯源

图片描述

  • 这一功能
    • 出现在1990年代初
    • 在Guido还在cwi做abc的时候就有了

图片描述

  • python最初的目的是
    • 成为c和shell之间的桥梁

总结

  • 这次研究了python文件运行时的系统参数
    • sys.argv
    • 通过sys.argv就可以接收从命令行来的参数了
    • 可以通过索引来获得第n个参数
    • 这就是索引(index)的作用

图片描述

  • 但是 调用实际过程中
    • 参数 可能给了
    • 也可能没给!
  • 万一程序里需要给外部参数
    • 但实际上没有给
    • 这可怎么办呢??🤔
  • 下次再说 👋