所以我尝试使用python创建一个简单的控制台应用程序,但是我遇到了问题。 我试图做一个新的“写”命令。此命令将打印文本。
示例:
> write hello
> hello
但是我不知道该怎么做。这是我代码中的命令:
x = ""
if w == "write " + x:
if x == "":
print("you need to add words")
if x != "":
print(x)
这很烦人,我需要帮助来解决这个问题
答案 0 :(得分:2)
您可以像这样使用while循环:
while True:
w = input("> ")
if w.startswith('write '):
print(w.split(' ', 1)[1])
试运行:
> write hello
hello
> write bye bye
bye bye
> hey hi
> help please!
> write Help please!
Help please!
>
答案 1 :(得分:0)
使用sys.argv[]
列表。它更容易,更僵硬:
sys.argv
是Python中的list
,其中包含传递给脚本的命令行参数。
注意sys.argv[0]
是脚本本身的名称!
因此,最简单的方法是内置sys.argv list
。例如,如果我的脚本名为:foo.py
,则可以通过命令行将参数传递给它,例如:
python foo.py向您问好 在foo.py中,我可以像这样获得传递的参数:
import sys
if __name__ == '__main__':
for arg in sys.argv[1:]:
#do work with arg! arg is a string type!
if argv[1]=='write':
print(argv[2])
答案 2 :(得分:0)
使用input()
接受键盘上的用户输入,并使用split()
将输入分为几部分:
command = input("Enter a command >")
parts = command.split(maxsplit=1)
if parts[0] == "write":
if len(parts) > 1:
print(parts[1])
else:
print("you did not enter any words to write")
else:
print("unknown command")
答案 3 :(得分:0)
假设您要编写一个不使用命令作为 参数(如上面回答中的建议),但是您运行该程序并循环检查用户输入,则可以通过以下方式进行操作:
import re
def main():
user_input = input()
write_command_pattern = "(?<=write)\s+.*"
result = re.findall(write_command_pattern, user_input)
print(result[0])
if __name__=='__main__':
main()
正则表达式(?<=write)\s+.*
返回每个以write
开头的任意字符串。要接受多个命令,可以将其包装成一个循环,并为其他命令添加其他模式。