我有一个包含22个.sgm格式文件的文件夹.我想读取所有文件.我将传递的命令行参数的输入将如下所示
/usr/local/pub/tmh/Reuters/*.sgm
所以这应该读取文件夹中的所有sgm格式文件.
我编写的使用python 3.4.2的代码是
allfiles=(glob.glob(sys.argv[1]))
print(allfiles)
Run Code Online (Sandbox Code Playgroud)
现在我得到的是1个文件 /usr/local/pub/tmh/Reuters/reut2-000.sgm.其余的没有被glob选中.此外,我试图打印应打印此参数,/usr/local/pub/tmh/Reuters/*.sgm但它打印/usr/local/pub/tmh/Reuters/reut2-000.sgm(这是文件夹中的第一个文件)
你的shell正在为你扩展glob,所以你真的将所有文件作为单独的参数传递给你的脚本,然后只看第一个.
所以不是传入/usr/local/pub/tmh/Reuters/*.sgm你的脚本,而是传入shell /usr/local/pub/tmh/Reuters/reut2-000.sgm /usr/local/pub/tmh/Reuters/reut2-001.sgm /usr/local/pub/tmh/Reuters/reut2-002.sgm等.
无论是引用的水珠或参数,或者刚刚进行读取的所有文件sys.argv[1:].
引用论点:
python yourscript.py "/usr/local/pub/tmh/Reuters/*.sgm"
Run Code Online (Sandbox Code Playgroud)
或者将glob扩展留给shell:
allfiles = sys.argv[1:]
print(allfiles)
Run Code Online (Sandbox Code Playgroud)