Python argv采用通配符路径
我使用Python argv采用通配符路径,python,python-2.7,glob,Python,Python 2.7,Glob,我使用doc1/*.png作为第一个参数运行脚本,但它会转换为doc1/image1.png 如何让Python看到确切的参数 img_list = [] print sys.argv[1] x = sys.argv[1] img_list = [img for img in glob.glob(x)] 在大多数linux shell(bash,sh,fish,…)上,星号由shell处理。将*转换为文件列表的事实已经在shell级别完成了 如果你写: python file.py doc/*
doc1/*.png
作为第一个参数运行脚本,但它会转换为doc1/image1.png
如何让Python看到确切的参数
img_list = []
print sys.argv[1]
x = sys.argv[1]
img_list = [img for img in glob.glob(x)]
在大多数linux shell(bash
,sh
,fish
,…)上,星号由shell处理。将*
转换为文件列表的事实已经在shell级别完成了
如果你写:
python file.py doc/*.png
shell本身将doc/*.png
转换为“doc/1.png”“doc/2.png”
(因此它在doc
目录中找到的.png
文件列表)
您应该使用引号传递星号,如:
python file.py 'doc/*.png'
标准Windows shell不为文件名使用通配符。正如@Jean-François Fabre sais所说,可以在Windows上使用glob模块使用通配符
import glob
paths = glob.glob('C:\path\with\wildcard.*')
这是在shell级别完成的。试着在Linux上引用:
“doc1/*.png”
如果arg在命令行中用单引号括起来,那么shell不应该扩展它。你在使用什么shell?ubuntu shell,它在windows中是一样的吗?当你说“ubuntu shell”时,我想你指的是Bash,因为这是Ubuntu和许多其他Linux发行版的标准shell,尤其是Debian家族的发行版。在windows上,情况并非如此,在windows上,你有完全相反的问题,你必须使用glob.glob
@Jean Françoisfare:谢谢。我不使用windows,你看:)我更喜欢:)。