2015-08-12 3 views
0

Привет. Поэтому я использую инструмент «трассировка» для создания скрипта python. Когда я читаю файлы vtk, скрипт python использует команду «LegacyVTKReader», а затем есть имя всех файлов VTK, которые я открыл. что-то вроде этого:читает неизвестное количество файлов VTK с LegacyVTKReader

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 в этой папке. так:

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

есть способ сделать это ??

ответ

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 
+2

или использовать glob: onlyfiles = glob.glob (mypath + '* .vtk') – lib

+0

Действительно! Я добавлю это в качестве альтернативы. Я думаю, что glob будет включать все соответствующие файлы в подкаталоги? – Stiffo

+0

Посмотрите, есть небольшая ошибка вдавливания перед входом. Во всяком случае нет, glob работает как расширение оболочки, он не будет включать файлы в подкаталоги – lib