如何正确地将python命令行参数提取到字符串中

如何正确地将python命令行参数提取到字符串中,python,command-line-arguments,Python,Command Line Arguments,我有以下python脚本,它希望将第一个参数作为字符串接受,将其反转,然后打印出来 import sys input = sys.argv[1:] input_reversed = input[::-1] print("The input_reversed is: " + input_reversed) 通过调用python test.py abcdef运行它,会得到以下错误: Traceback (most recent call last): File "

我有以下python脚本,它希望将第一个参数作为字符串接受,将其反转,然后打印出来

import sys

input = sys.argv[1:]
input_reversed = input[::-1]
print("The input_reversed is: " + input_reversed)
通过调用
python test.py abcdef
运行它,会得到以下错误:

Traceback (most recent call last):
  File "test.py", line 5, in <module>
    print("The input_reversed is: " + input_reversed)
TypeError: cannot concatenate 'str' and 'list' objects
回溯(最近一次呼叫最后一次):
文件“test.py”,第5行,在
打印(“输入翻转为:“+输入翻转”)
TypeError:无法连接'str'和'list'对象
我怎么了
sys.argv[1://code>是否不返回字符串


我只想调用
python test.py abcdef
并将输出作为
fedcba
,这与
abcdef

相反。否,它返回一个列表。您可以使用
join()
将列表连接在一起。试试这个:

print(“反转的输入是:“+”,”.join(反转的输入))

如果要反转每个参数的内容,除了反转参数本身的顺序外,还要将所有参数合并到一个字符串中,然后反转该字符串:

print("The reversed input is: " + ' '.join(sys.argv[1:])[::-1])
注意这里的操作顺序。它可以用更多的中间步骤编写,如:

args_list = sys.argv[1:]
args_string = ' '.join(args_list)
reversed_args_string = args_string[::-1]
print("The reversed input is: " + reversed_args_string)

执行
join
操作会导致输出不反转,但保持不变吗?这很有趣。你能检查一下这个连接的输出吗?相反的是相反的,嗯
','。join(['one','two','three'][::-1])
在属性上是
'three,two,one'
——反之亦然。它只会使用您定义的任何分隔符将列表中的项目连接在一起。输出的顺序与传递给函数的列表的顺序相同。因此,如果您使用“,
.join(['a','b','c'])
您将得到结果
“a,b,c”
['one',two',three'][1::
['two','three']
——这是字符串列表,而不是字符串。我只想调用
python test.py abcdef
,并以
fedcba
的形式获得输出!这不是你的代码所做的;它反转参数的顺序,而不是反转单个参数的文本。(因此,如果只传递一个参数,则该列表根本无法有意义地反转,因此它保持不变)。假设只有一个参数和
len
>1,您可以使用
sys.argv[1][::-1]
并将其另存为变量。
sys.argv[1]
获取字符串中的第一个参数,这就是我在这里要做的。非常感谢!