glob 无法从命令行变量中提取所有 FIE



我在我的python程序中使用glob.glob命令,当我在python脚本中给出整个路径时,它工作正常。如果我将路径作为命令行参数提供,glob 不起作用。

 path=r'/home/*/sale'
 all = glob.glob(path + "/x.txt")
 print all
 Output:
 ['/home/x1/sale/x.txt', '/home/x2/sale/x.txt']

但是当我从下面的参数进行路径时,它不起作用。

 path = sys.argv[1]
 all = glob.glob(path + "/x.txt")
 print all
 Output:
 ['/home/x1/sale/x.txt']

它只拾取第一个文件。

有人可以帮我了解我在这里错过了什么。谢谢!

当你在命令行中使用*时,系统(Linux或更确切地说是bash(会用值替换它。

所以你跑

script.py /home/*/sale

bash将其替换为

script.py /home/x1/sale /home/x2/sale 

你在 sys.argv 中有sys.argv[1] /home/x1/sale/home/x2/sale[2]

您必须将文本放在单个配额标记' '命令行中。

script.py '/home/*/sale'

并且它不会替换*和系统的变量(如$HOME(

或者双配额标记" ",它不会取代*但会替换变量。

script.py "/home/*/sale"

最新更新