如何在 运行 代码中设置字符串?
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
。对于接受多个命令,您可以将其包装在一个循环中并为其他命令添加其他模式。
所以我尝试使用 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
。对于接受多个命令,您可以将其包装在一个循环中并为其他命令添加其他模式。