0

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

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

python myPythonScript.py -i folder/*

如果我在第一次访问它时打印选项 -i 的参数

folder/firstFileInFolder.txt

但是如果我用

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

它工作得很好。有谁知道,为什么 python 可能会那样做?

4

2 回答 2

1

尝试运行此脚本

import sys

for arg in sys.argv:
    print arg

蟒蛇脚本.py *

你的 shell 在 python 看到它之前扩展了星号。

于 2012-08-28T06:46:26.427 回答
0

如评论中所述,您的外壳正在扩展非逗号分隔大小写的星号。如果您知道用户可以像第二个示例中那样将星号指定为文件名的一部分,则可以让 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))

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

于 2012-08-28T09:59:43.400 回答