2013-07-25 134 views
4

我想從自動VTK/VTU文件導出CSV文件。paraview包Python腳本相當於文件 - 的>保存數據

現在,我採取的步驟是:

  • 開放paraview包
  • 負載存儲所有的VTU文件的信息(一個在我的PDE模擬中的每個時間步進)
  • 的PVD文件左側
  • 轉到屬性選項卡,點擊「應用」
  • 文件 - >保存數據...提供一個基本文件名,選擇「點」和「寫入所有的時間步長」

這寫一個csv文件的每個時間步與名稱basefilename#timestepno#.csv

有沒有辦法從命令行(計算機上沒有X服務器進行計算),例如使用python界面?

回答

6

嘗試在任一的Python殼牌以下在UI或使用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() 
+0

謝謝!它只需要說「CreateWriter('foo.csv',reader)」,那麼它對我很有用 – Hans

4

我有pvtu文件類似的問題,並與下面的腳本解決它。我在Paraview - > Tools - > Python Shell中使用execfile(「SCRIPTNAME」)運行腳本。我希望這有幫助。

- 萊因哈德

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. """" 
+0

對於'directory',你可以使用['glob'](https://docs.python.org/3/library/glob.html)。 –

相關問題