3

我正在尝试通过参数将文件列表传递给我的 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"

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

4

3 回答 3

2

很难看不到您正在使用的内容或任何代码。您的外壳可能会干扰,您可能需要使用\.

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

于 2013-06-25T12:49:56.900 回答
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 是您正在运行的文件名。

于 2013-06-25T13:19:23.743 回答
0

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

于 2013-06-25T13:33:40.020 回答