带引号的Python参数

问题描述 投票:2回答:4

我正在尝试通过参数将文件列表传递给我的python脚本:

python script.py -o aaa -s bbb "filename.txt" "filename2.txt" "file name3.txt"

不幸的是,ArgumentParser忽略了引号,没有给出3个文件的列表,而是给了我4个元素的列表,如下所示:

1) "filename.txt"
2) "filename2.txt"
3) "file
4) name3.txt"

它完全忽略引号。如何使其与引号一起使用?

python command-line-interface command-line-arguments
4个回答
2
投票

很难看到您正在使用什么或任何代码。您的外壳程序[[may会干扰,您可能需要使用\来转义空格。

示例:python script.py -o a -f "file1.txt" "file\ 2.csv"

0
投票
没有代码很难,但是考虑到您正在使用sys.argv[],您可以轻松地用引号传递文件参数,例如当您需要带有空格的文件或argv时:python script.py "myFile.txt" "otherFile.jpeg"尝试以下简单代码以了解:

import sys for n, p in enumerate(sys.argv): print("Parameter: %d = %s") % (n, p))`

您可以看到第一个argv是您正在运行的文件名。

0
投票
看来这不是python的错。我从bash脚本内部调用python脚本,这使引号作为参数变得混乱。

0
投票
您确定在实际脚本中使用的是双引号(“)而不是单引号(')?这些第二个引号不起作用。
© www.soinside.com 2019 - 2024. All rights reserved.