用引号传递的Python参数

用引号传递的Python参数,python,command-line-interface,command-line-arguments,Python,Command Line Interface,Command Line Arguments,我试图通过参数将文件列表传递给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脚本:

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"

它完全忽略了引用。如何使用引号?

在看不到您正在使用什么或任何代码的情况下,很难使用引号。 您的shell可能会干扰,您可能需要使用
\
逃出空格

例如:
python script.py-o a-f“file1.txt”“file\2.csv”
没有代码是很难的,但是考虑到您使用的是
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是您正在运行的文件名。

看起来这不是python的错。我从bash脚本内部调用python脚本,这会把引号作为参数弄得一团糟。

你期待什么?好吧,这一切都取决于shell。在bash中,将在将参数传递给程序之前删除引号。不知道windows(或其他shell)如何处理引号。我怀疑这是shell的错。