在 glob 中扩展星号

Expanding asterisk in 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 时,它不再运行

谢谢

你调用脚本的方式,* 被 Bash 本身扩展,所以说

python fileName.py /home/*

这被扩展为

python fileName.py /home/file1 /home/file2 /home/file3

所以 sys.argv[1] 就是 /home/file1.

要使其工作,请在 Python 脚本中添加 *

import sys
import glob

def list_file():
    return glob.glob(sys.argv[1] + '*')

print list_file()

和运行喜欢python fileName.py /home/

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

来查看
python fileName.py "/home/*"

由于 shell 扩展了通配符,您不需要调用 glob。只需打印 sys.argv

中的所有参数
def list_file():
    return sys.argv[1:]

print list_file()