在glob中扩展星号

时间:2015-07-31 22:15:13

标签: python linux glob

我希望能够在linux中的目录中打印所有文件的列表,但我的代码只打印出目录中的第一项

主目录中的

是text1.txt,text2.txt,text3.txt

当我在命令行上运行时,

sys.argv[1]应为/ home/*

python fileName.py /home/*

脚本:

def list_file():
    listFile= glob.glob(sys.argv[1])
    return listFile

print list_file()

输出只是目录中的第一个文件

 ['text1.txt']

任何想法?该代码在Windows上运行良好,但当我将其移至Linux时,它不再起作用

由于

3 个答案:

答案 0 :(得分:5)

您调用脚本的方式,static由Bash本身扩展,所以说

*

这会扩展到

python fileName.py /home/*

所以python fileName.py /home/file1 /home/file2 /home/file3 只是sys.argv[1]

要使其正常工作,请在Python脚本中添加/home/file1

*

并像import sys import glob def list_file(): return glob.glob(sys.argv[1] + '*') print list_file() 一样运行。

答案 1 :(得分:2)

由于shell扩展了通配符,因此您无需调用sys.argv。只需打印def list_file(): return sys.argv[1:] print list_file()

中的所有参数即可
{{1}}

答案 2 :(得分:1)

使用引号。 Shell运行第一个参数作为命令。您可以使用" print sys.argv [1] "

python fileName.py "/home/*"