gpt4 book ai didi

python - 在 UNIX 环境中运行时,防止在非引号 python 脚本参数中扩展通配符

转载 作者:太空宇宙 更新时间:2023-11-04 07:58:16 25 4
gpt4 key购买 nike

我有一个 python 脚本,我想提供一个包含通配符的参数(通常),指的是我想处理的一系列文件。这里的例子:

#!/usr/bin/env python

import argparse
import glob

parser = argparse.ArgumentParser()
parser.add_argument('-i', action="store", dest="i")
results = parser.parse_args()
print 'argument i is: ', results.i
list_of_matched_files = glob.glob(results.i)

在这种情况下,如果用户像这样向传递的参数添加引号,一切都会很好:

./test_script.py -i "foo*.txt"

...但是用户常常忘记在参数中添加引号,并且当列表仅包含第一个匹配项时被难住,因为 UNIX 已经扩展了列表并且 argparse 才获得第一个列表元素。

有没有办法(在脚本中)阻止 UNIX 在将列表传递给 python 之前扩展列表?或者甚至可能只是为了测试参数是否不包含引号然后警告用户?

最佳答案

没有。在脚本运行之前,shell(Bash、zsh、csh、fish 等)会扩展通配符,并且脚本无法对它们做任何事情。测试参数是否包含引号也不会起作用,因为 shell 在将参数传递给脚本之前类似地从 "foo*.txt" 中去除引号,所以所有 Python 看到的都是 foo *.txt.

关于python - 在 UNIX 环境中运行时,防止在非引号 python 脚本参数中扩展通配符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44971986/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com