我希望能够在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时,它不再起作用
由于
答案 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/*"