使用LegacyVTKReader读取未知数量的VTK文件

时间:2015-08-12 11:11:01

标签: python vtk paraview

嗨所以我使用paraview“trace”工具制作python脚本。 当我读取vtk文件时,python脚本使用名为“LegacyVTKReader”的命令,然后是我打开的所有VTK文件的名称。像这样的东西:

paraview = LegacyVTKReader( FileNames=  
['/home/afshinzkh/Desktop/DEM/Sample 1/paraview0500.vtk',  
'/home/afshinzkh/Desktop/DEM/Sample 1/paraview1000.vtk',  
'/home/afshinzkh/Desktop/DEM/Sample 1/paraview1500.vtk',  
'/home/afshinzkh/Desktop/DEM/Sample 1/paraview2000.vtk', 
'/home/afshinzkh/Desktop/DEM/Sample 1/paraview2500.vtk'])  

现在问题出现在我的每个样本中,有不同数量的VTK文件具有不同的名称。所以我想以某种方式更改代码,以便它适用于我的所有样本。更准确地说,我想去一个文件夹并读取该文件夹中的所有VTK文件。 像这样:

paraview paraview = LegacyVTKReader( FileNames=  
['/home/afshinzkh/Desktop/DEM/Sample 1/*.vtk'])

有办法吗?

1 个答案:

答案 0 :(得分:2)

这是我认为你要问的一种方法。这将获得文件夹

中所有文件的列表
from os import listdir
from os.path import isfile, join
# This is done to filter out directories
mypath = "path/to/my/dir"
onlyfiles = [ f for f in listdir(mypath) if isfile(join(mypath,f)) ]
for file in onlyfiles:
    paraview paraview = LegacyVTKReader( FileNames= [file])
    # do whatever else you do

这假设您有一个仅包含.vtk文件的文件夹。您当然也可以轻松添加检查。

更清洁的是使用glob代替。

import glob
# Returns list of path names that matches
onlyfiles = glob.glob( mypath + '*.vtk') 
for file in onlyfiles:
    paraview paraview = LegacyVTKReader( FileNames= [file])
    # do whatever else you do