繁体   English   中英

传递星号时的python行为

[英]python behaviour when passed an asterisk

我正在编写一个小脚本,该脚本应该能够处理多个文件。 因此,我添加了文件,可以用逗号分隔传递这些文件,然后执行arg.split(','),然后处理每个文件。

现在我想添加星号作为输入可能性,例如

python myPythonScript.py -i folder/*

如果我第一次访问它时,将参数-i的参数正确打印出来

folder/firstFileInFolder.txt

但是如果我用

python myPythonScript.py -i someFolder/someFile,folder/*

它工作正常。 有谁知道,为什么python可能会那样?

尝试运行此脚本

import sys

for arg in sys.argv:
    print arg

python script.py *

您的外壳在python看到之前先展开星号。

如注释中所述,您的shell扩展了非逗号分隔大小写的星号。 如果您知道用户可以像第二个示例一样将星号指定为文件名的一部分,则可以让Python使用glob模块进行路径扩展。

from glob import glob
glob('*')

允许shell或Python进行星号扩展的代码可能如下所示:

import glob
file_list = []
for pattern in sys.argv[1:]:
    file_list.extend(glob.glob(pattern))

在您的情况下,使用逗号作为分隔符将阻止您将逗号用作文件名的一部分。

暂无
暂无

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

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