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

Python 使用LegacyVTKReader读取未知数量的VTK文件,python,vtk,paraview,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

大家好,我正在使用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'])  
paraview paraview = LegacyVTKReader( FileNames=  
['/home/afshinzkh/Desktop/DEM/Sample 1/*.vtk'])
现在的问题是,在我的每个示例中,都有不同数量的VTK文件,具有不同的名称。因此,我希望以某种方式更改代码,使其适用于我的所有示例。更确切地说,我想转到一个文件夹并读取该文件夹中的所有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'])  
paraview paraview = LegacyVTKReader( FileNames=  
['/home/afshinzkh/Desktop/DEM/Sample 1/*.vtk'])

有没有办法做到这一点

这里有一种方法可以满足你的要求。这将获得文件夹中所有文件的列表

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文件。当然,您也可以轻松地添加检查

一点清洁剂将被用来代替

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

或者使用glob:onlyfiles=glob.glob(mypath+'*.vtk')真的!我将添加它作为替代方案。我认为glob会在子目录中包含所有匹配的文件?看,在for之前有一点缩进错误。无论如何,不,glob与shell扩展类似,它不会包含子目录中的文件