繁体   English   中英

用引号传递的 Python 参数

[英]Python arguments passed with quotes

我正在尝试通过参数将文件列表传递给我的 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 script.py -oa -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 脚本,这使引号作为参数变得混乱。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM