繁体   English   中英

python中的sys.argv用法

[英]sys.argv ussage in python

我只是想知道如何在这个特定程序中使用sys.argv列表作为命令行参数而不是输入法。 由于 python 中不存在argc ,长度会被len方法所限制,对吗?

提前感谢您的任何帮助!

MORSE_CODE_DICT = {
    'A':'.-',
    'B':'-...',
    'C':'-.-.',
    'D':'-..',
    'E':'.',
    'F':'..-.',
    'G':'--.',
    'H':'....',
    'I':'..',
    'J':'.---',
    'K':'-.-',
    'L':'.-..',
    'M':'--',
    'N':'-.',
    'O':'---',
    'P':'.--.',
    'Q':'--.-',
    'R':'.-.',
    'S':'...',
    'T':'-',
    'U':'..-',
    'V':'...-',
    'W':'.--',
    'X':'-..-',
    'Y':'-.--',
    'Z':'--..',
    '1':'.----',
    '2':'..---',
    '3':'...--',
    '4':'....-',
    '5':'.....',
    '6':'-....',
    '7':'--...',
    '8':'---..',
    '9':'----.',
    '0':'-----',
}

```python

def encryptor(text):
    encrypted_text = ""
    for letters in text:
        if letters != " ":
            encrypted_text = encrypted_text + MORSE_CODE_DICT.get(letters) + " "
        else:
            encrypted_text += " "
    print(encrypted_text)

text_to_encrypt = input("Enter Some Text To Encrypt : ").upper()
encryptor(text_to_encrypt)

sys.argv的第一个元素是执行程序的名称。 其余的是传递给程序的参数,由 shell 管理。 例如,使用文件名扩展*.txt将为找到的每个文本文件扩展为一个单独的元素。 可以写个测试程序看看不同的扩展

测试.py:

import sys
print(sys.argv)

两种运行方式是

$ python test.py hello there buckaroo
['test.py', 'hello', 'there', 'buckaroo']
$ python test.py "hello there buckaroo"
['test.py', 'hello there buckaroo']

对您来说一个简单的解决方案是连接参数,以便一个人可以带或不带引号输入

import sys
text_to_encrypt = " ".join(sys.argv[1:]).upper()
encryptor(text_to_encrypt)

添加我们得到的代码

$ python morsecoder.py hello there buckaroo
.... . .-.. .-.. ---  - .... . .-. .  -... ..- -.-. -.- .- .-. --- --- 

请注意,我们不需要特别知道 argv 的长度。 Python 喜欢迭代 - 通常情况下,如果您需要某事物的长度,那么您就做错了。

sys.argv = 传递给 Python 脚本的命令行参数列表。 argv[0]是脚本名称。

您可以尝试这样的操作,也可以使用strip()方法删除前导/尾随和字符(空格是要删除的默认前导字符)


def encrypt():
    return "".join([MORSE_CODE_DICT.get(letter,"NA") for word in sys.argv[1:] for letter in word])

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM