Python 如何从一个目录输入多个文件
首先也是最重要的一点,我最近刚接触Unix,我试图在网上找到我的问题的解决方案,但找不到解决方案 因此,我正在通过Unix终端运行Python 如何从一个目录输入多个文件,python,xml,unix,Python,Xml,Unix,首先也是最重要的一点,我最近刚接触Unix,我试图在网上找到我的问题的解决方案,但找不到解决方案 因此,我正在通过Unix终端运行Python,我有一个程序可以解析xml文件,并将结果输入到.dat文件中 我的程序可以运行,但我必须单独输入每个xml文件(超过50) 例如: clamshell: python3 my_parser2.py 'items-0.xml' 'items-1.xml' 'items-2.xml' 'items-3.xml' .....` 所以我想知道是否可以从包含我所
Python
,我有一个程序可以解析xml
文件,并将结果输入到.dat
文件中
我的程序可以运行,但我必须单独输入每个xml
文件(超过50
)
例如:
clamshell: python3 my_parser2.py 'items-0.xml' 'items-1.xml' 'items-2.xml' 'items-3.xml' .....`
所以我想知道是否可以从包含我所有文件的目录中读取到我的程序中?而不是单独键入所有xml
文件名并以这种方式运行程序
在此方面的任何帮助都将不胜感激
python3 my_parser2.py*.xml应该可以工作。shell本身可以扩展通配符,因此,如果您不关心输入文件的顺序,只需使用:
python3 my_parser2.py items-*.xml
如果数字顺序很重要(您希望0..9
,10-99
等按该顺序排列),您可能需要稍微调整通配符参数以保证这一点,例如:
python3 my_parser2.py items-[0-9].xml items-[1-9][0-9].xml items-[1-9][0-9][0-9].xml
除了命令行选项之外,您只需在脚本中使用,而不需要使用命令参数:
import glob
filenames = glob.glob("*.xml")
这将返回运行脚本的目录中的所有.xml
文件(作为文件名)
然后,如果需要,您可以简单地使用基本循环遍历所有文件:
for file in filenames:
with open(file, 'r') as f:
# do stuff to f.
非常好的答案!感谢您的书面和清晰的答案。这非常好,感谢您的编辑和回答!不客气,Yozuru。不要忘记回答其中一个问题,这样有类似问题的用户将知道什么有效。:-)
import glob
listOffiles = glob.glob('directory/*.xml')