[Paraview] PV client-server: browsing remote files

Sebastien Jourdain sebastien.jourdain at kitware.com
Sat Jan 6 17:15:04 EST 2018


You can find another way to do it here as well:

https://github.com/Kitware/ParaView/blob/master/Web/Python/paraview/web/protocols.py#L2692-L2695
https://github.com/Kitware/ParaView/blob/master/Web/Python/paraview/web/protocols.py#L2715-L2716
[...]

On Sat, Jan 6, 2018 at 12:03 PM, Utkarsh Ayachit <
utkarsh.ayachit at kitware.com> wrote:

> Robert,
>
> Sorry I missed the email earlier. What you have as an alternative is
> indeed a reasonable approach. Once can also use ParaView's
> infrastructure used by the file dialog, but it's a little clunky
> currently, since it needs to be pythonified for easier user.
>
> Here's how you'd do this with 5.4.1.
>
> from paraview import servermanager as sm
>
> helper = sm.misc.FileInformationHelper()
> helper.DirectoryListing = 1
> helper.WorkingDirecotry = "'/path/to/data/on/remote"
>
> pvinfo = servermanager.vtkPVFileInformation()
> helper.GatherInformation(pvinfo)
> for a_pvinfo in pvinfo.GetConents():
>    if a_pvinfo.GetType() == a_pvinfo.FILE_GROUP:
>      for b_pvinfo in a_pvinfo.GetContents():
>         assert b_pvinfo.GetType() == b_pvinfo.SINGLE_FILE
>         print (b_pvinfo.GetName(),  b_pvinfo.GetFullPath())
>    elif a_pvinfo.GetType() ==  a_pvinfo.SINGLE_FILE
>       print (a_pvinfo.GetName(),  a_pvinfo.GetFullPath())
>
> This will print all files in the directory.
>
> See vtkPVFileInformation docs
> (https://www.paraview.org/ParaView3/Doc/Nightly/www/cxx-
> doc/classvtkPVFileInformation.html)
> for more API details.
>
> Hope that helps.
>
> Utkarsh
>
> On Fri, Jan 5, 2018 at 2:05 PM, Robert Sawko <robertsawko at gmail.com>
> wrote:
> > Hi,
> >
> > I will bump my own post from a month back (see below) and just will
> answer the
> > question in case anyone else was looking for something similar. I
> haven't found
> > a way to remotely navigate the file system through ParaView Python API
> objects,
> > but of course there are other Python packages which can achieve that. I
> used
> > paramiko. Below is my minimal example.
> >
> >
> >     from paraview.simple import LegacyVTKReader, RenameSource, Connect
> >     from paramiko import SSHClient, AutoAddPolicy
> >
> >     '''
> >     This script extracts the output of a remote ls command with to feed
> into
> >     a LegacyVTKReader. The main use is it to make a collection of VTK
> files
> >     into a time sequence inside PV.
> >     '''
> >
> >     # Inputs:
> >     host = 'remote.host.com'
> >     port = 22
> >     username = 'me'
> >     key_filename = '/path/to/private/key'
> >
> >     pvhost = 'localhost'    # I typically run pvserver through an ssh
> tunnel so
> >     pvport = 22227          # these are the parameters for local port
> forward
> >
> >     data_dir = '/path/to/data/on/remote'
> >
> >     # SSH part
> >     # to get a list of files to open
> >     client = SSHClient()
> >     client.set_missing_host_key_policy(AutoAddPolicy())
> >
> >     client.connect(
> >         host, port=port,
> >         username=username,
> >         key_filename=key_filename)
> >
> >     stdin, stdout, stderr = client.exec_command(
> >         'ls -1 {0}'.format(data_dir))
> >     lslines = stdout.readlines()
> >     client.close()
> >
> >     # ParaView part
> >     Connect('localhost', 22227)
> >     reader = LegacyVTKReader(FileNames=[
> >          'data/{0}'.format(l.strip()) for l in lslines])
> >     RenameSource('source', reader)
> >
> > Hope this helps someone!
> > Robert
> >
> > On 12/01/17 at 07:18pm, Robert Sawko wrote:
> >> Dear ParaViewers,
> >>
> >>
> >> I am trying to use Python shell in Client-Server mode, but I am running
> into
> >> some difficulties. How can I actually browse the remote directories. I
> tried
> >> to use the `os` module, but that obviously ends up being all local.
> Here's a
> >> minimal example of what I am trying to achieve.
> >>
> >>
> >>         from paraview.simple import Connect, LegacyVTKReader
> >>         from os import listdir
> >>
> >>         Connect('my_server', port)
> >>         location = '/my/remote/location/'
> >>
> >>         file_names = listdir(location).sort()
> >>         reader = LegacyVTKReader(FileNames=file_names)
> >>
> >>
> >> Please let me know if it's at all possible to query the directory on
> the remote
> >> side through an established connection.
> >>
> >> Many thanks,
> >> Robert
> >> --
> >> Seems like the famous poem of turbulence comes from Jonathan Swift
> >> http://en.wikipedia.org/wiki/The_Siphonaptera
> >
> > --
> > Playing possum, opposable digit, climbing, swimming, omnivores...
> > Is there nothing they can't do?
> > http://en.wikipedia.org/wiki/Opossum
> > _______________________________________________
> > Powered by www.kitware.com
> >
> > Visit other Kitware open-source projects at http://www.kitware.com/
> opensource/opensource.html
> >
> > Please keep messages on-topic and check the ParaView Wiki at:
> http://paraview.org/Wiki/ParaView
> >
> > Search the list archives at: http://markmail.org/search/?q=ParaView
> >
> > Follow this link to subscribe/unsubscribe:
> > https://paraview.org/mailman/listinfo/paraview
> _______________________________________________
> Powered by www.kitware.com
>
> Visit other Kitware open-source projects at http://www.kitware.com/
> opensource/opensource.html
>
> Please keep messages on-topic and check the ParaView Wiki at:
> http://paraview.org/Wiki/ParaView
>
> Search the list archives at: http://markmail.org/search/?q=ParaView
>
> Follow this link to subscribe/unsubscribe:
> https://paraview.org/mailman/listinfo/paraview
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://paraview.org/pipermail/paraview/attachments/20180106/7de89681/attachment.html>


More information about the ParaView mailing list