Paraview Python脚本的等效于“文件->保存数据”是什么?

9
我想要自动从vtk/vtu文件中导出csv文件。
目前,我需要执行以下步骤:
1.打开Paraview软件
2.加载存储有所有vtu文件信息的pvd文件(每个时间步长都有一个vtu文件)
3.点击左侧的属性选项卡,然后点击“应用”
4.选择“文件”->“保存数据...”,提供基本文件名,选择“点”和“写入所有时间步长”
这会为每个时间步长编写一个csv文件,文件名为basefilename#timestepno#.csv
是否有一种方法可以通过命令行完成此操作(计算机上没有X服务器),例如使用Python接口?
2个回答

10

请在 UI 中的 Python Shell 或使用 pvpythonpvbatch Python 可执行文件中尝试以下操作。

from paraview import simple
reader = simple.OpenDataFile("..../foo.pvd")
writer = simple.CreateWriter("..../foo.csv", reader)
writer.WriteAllTimeSteps = 1
writer.FieldAssociation = "Points"
writer.UpdatePipeline()

谢谢!只需要写成“CreateWriter('foo.csv', reader)”这样,那么它就能正常工作了。 - Hans

4
我曾遇到过pvtu文件的类似问题,并通过以下脚本解决。在Paraview中,我使用execfile("SCRIPTNAME")命令在工具->Python Shell下运行该脚本。希望这能帮到您。
-- Reinhard
from paraview.simple import *
import os

"""Function that counts number of files
with specific extension in directory """
def directory(path,extension):
  list_dir = []
  list_dir = os.listdir(path)
  count = 0
  for file in list_dir:
    if file.endswith(extension): # eg: '.txt'
      count += 1
  return count

"""Choose input/output directory and filenames"""
pvtu_input_directory = "thin_1000_0.4/mesh/"
csv_output_directory = "thin_1000_0.4/csv/"
input_filename_root = "output"
output_filename_root = "output"

""" Create output directory """
os.system('mkdir '+csv_output_directory)

"""Start Loop over all files """
number_of_pvtu = directory(pvtu_input_directory,'.pvtu')
for index in range(1,number_of_pvtu):
    in_filename = input_filename_root + "%0.4d" % index+".pvtu"
    out_filename = output_filename_root + "%0.4d" % index +".csv"
    loadfile = pvtu_input_directory + in_filename
    writefile = csv_output_directory + out_filename
    r = XMLPartitionedUnstructuredGridReader( FileName=loadfile)
    writer = CreateWriter(writefile,r)
    writer.FieldAssociation = "Points"
    writer.UpdatePipeline()

""" That's it. """"

对于“directory”,您可以使用glob - sancho.s ReinstateMonicaCellio

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接