[英]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.