我有一个包含22个.sgm格式文件的文件夹。我想读取所有文件。我将传递的命令行参数的输入看起来像
/usr/local/pub/tmh/Reuters/*.sgm
所以这应该读取文件夹中的所有sgm格式文件。
我编写的使用python 3.4.2的代码是
allfiles=(glob.glob(sys.argv[1]))
print(allfiles)
现在我得到的是1个文件/usr/local/pub/tmh/Reuters/reut2-000.sgm
。其余的没有被glob选中。此外,我尝试打印应该打印此/usr/local/pub/tmh/Reuters/*.sgm
的参数,但它打印/usr/local/pub/tmh/Reuters/reut2-000.sgm
(这是文件夹中的第一个文件)
答案 0 :(得分:5)
您的 shell 正在为您扩展glob,因此您实际上将所有文件作为单独的参数传递给您的脚本,然后查看第一个。
所以,不是将/usr/local/pub/tmh/Reuters/*.sgm
传递给你的脚本,而是传递/usr/local/pub/tmh/Reuters/reut2-000.sgm /usr/local/pub/tmh/Reuters/reut2-001.sgm /usr/local/pub/tmh/Reuters/reut2-002.sgm
等等。
引用 glob或参数,或只读取sys.argv[1:]
中的所有文件。
引用参数:
python yourscript.py "/usr/local/pub/tmh/Reuters/*.sgm"
或将glob扩展留给shell:
allfiles = sys.argv[1:]
print(allfiles)