在 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()
我希望能够打印 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()