如何在 运行 代码中设置字符串?

How to set string while running the code?

所以我尝试使用 python 制作一个简单的控制台应用程序,但我遇到了问题。 我正在尝试创建一个新的“写入”命令。此命令将打印文本。

示例:

> write hello
> hello

但是我不知道怎么做。这是我代码中的命令:

x = ""

if w == "write " + x:
    
    if x == "":

        print("you need to add words")

    if x != "":

        print(x)

这很烦人,我需要帮助来解决这个问题

使用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]) 

使用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")

您可以像这样使用 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!
> 

假设你想写一个不把命令当作 调用它的参数(如上面回答中的建议),但是你 运行 程序并在循环中检查用户输入,你可以按以下方式进行:

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+.* returns 每个任意字符串前面都有 write。对于接受多个命令,您可以将其包装在一个循环中并为其他命令添加其他模式。