我在我的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"