Python循环参数长度并将所有字符串保存在一个变量中

时间:2019-07-10 00:59:17

标签: python loops arguments

我正在尝试为Discord Webhook创建我的第一个Python脚本,简而言之,一个C#脚本将参数传递给Python脚本(参数的长度是可变的),并且需要将所有参数连接到一个变量中

import sys 
from discord_webhook import DiscordWebhook, DiscordEmbed

argv_len = len(sys.argv)

for x in range(2, argv_len):
    message += sys.argv[x]

我得到的错误是:NameError:未定义名称'message'

我希望所有参数都保存在一个名为“ message”的变量中

3 个答案:

答案 0 :(得分:1)

在引用message之前,必须对其进行初始化。就是说,由于+=运算符的工作方式,python不知道您在说什么。 +=运算符expects itself to be concatonating two already existing lists.但是,没有先定义空列表,只有一个列表。

一旦实现,您的代码应如下所示:

import sys 
from discord_webhook import DiscordWebhook, DiscordEmbed

argv_len = len(sys.argv)

message = []
for x in range(2, argv_len):
    message += sys.argv[x]

另外,更简单的方法是slicing。这将切断前两个参数,并将其余参数保留在数组中。 (感谢@furas提及此)。可能如下:

import sys 
from discord_webhook import DiscordWebhook, DiscordEmbed

message = sys.argv[2:]

这使元素从前两个开始一直到列表的末尾。 (它始于 索引2,包括两端,然后到达列表的末尾)

答案 1 :(得分:0)

您只需要在for循环外声明变量,即可在使用for循环后在循环外访问它,因为变量仅具有词法作用域。

argv_len = len(sys.argv)
message = ''
for x in range(2, argv_len):
    message += sys.argv[x]
print(message)

答案 2 :(得分:0)

在开始for循环之前,您需要声明变量消息。