<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Iterating over directory tree (recursively) in Software Development Kit (SDK) and API Discussions</title>
    <link>https://community.netapp.com/t5/Software-Development-Kit-SDK-and-API-Discussions/Iterating-over-directory-tree-recursively/m-p/75153#M931</link>
    <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi community,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm trying to fetch all the file inside a given directory recursively. Are there any easy way to implement this using the API?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE border="1" class="jiveBorder" jive-data-cell="{&amp;amp;quot;color&amp;amp;quot;:&amp;amp;quot;#575757&amp;amp;quot;,&amp;amp;quot;textAlign&amp;amp;quot;:&amp;amp;quot;left&amp;amp;quot;,&amp;amp;quot;padding&amp;amp;quot;:&amp;amp;quot;NaN&amp;amp;quot;,&amp;amp;quot;backgroundColor&amp;amp;quot;:&amp;amp;quot;#FFFF99&amp;amp;quot;,&amp;amp;quot;fontFamily&amp;amp;quot;:&amp;amp;quot;arial,helvetica,sans-serif&amp;amp;quot;}" jive-data-header="{&amp;amp;quot;color&amp;amp;quot;:&amp;amp;quot;#FFFFFF&amp;amp;quot;,&amp;amp;quot;backgroundColor&amp;amp;quot;:&amp;amp;quot;#6690BC&amp;amp;quot;,&amp;amp;quot;textAlign&amp;amp;quot;:&amp;amp;quot;center&amp;amp;quot;,&amp;amp;quot;padding&amp;amp;quot;:&amp;amp;quot;2&amp;amp;quot;}" style="border: 1px solid #000000; width: 551px; height: 698px;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TH style="text-align: center; color: #ffffff; padding: 2px; background-color: #6690bc;"&gt;&lt;STRONG&gt;example.py&lt;/STRONG&gt;&lt;/TH&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="color: #575757; text-align: left; padding: 0px; font-family: arial, helvetica, sans-serif; background-color: #ffff99;"&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;import sys&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;sys.path.append('&lt;SPAN style="color: #00ccff;"&gt;[omitted output]&lt;/SPAN&gt;')&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;from NaServer import *&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;s = NaServer('&lt;SPAN style="color: #00ccff;"&gt;[omitted output]&lt;/SPAN&gt;', 1 , 20)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;s.set_server_type('FILER')&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;s.set_transport_type('HTTPS')&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;s.set_port(443)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;s.set_style('LOGIN')&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;s.set_vserver('&lt;SPAN style="color: #00ccff; font-family: 'courier new', courier;"&gt;[omitted output]&lt;/SPAN&gt;')&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;s.set_admin_user('&lt;SPAN style="color: #00ccff;"&gt;[omitted output]&lt;/SPAN&gt;', '&lt;SPAN style="color: #00ccff;"&gt;[omitted output]&lt;/SPAN&gt;')&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;volpath = '/vol/&lt;SPAN style="color: #00ccff;"&gt;[omitted output]&lt;/SPAN&gt;'&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;api = NaElement('file-list-directory-iter')&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;api.child_add_string('path',volpath)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;xi = NaElement('desired-attributes')&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;api.child_add(xi)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;xi1 = NaElement('file-info')&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;xi.child_add(xi1)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;xi1.child_add_string('name','&amp;lt;name&amp;gt;')&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;xi1.child_add_string('file-type','&amp;lt;file-type&amp;gt;')&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;xo = s.invoke_elem(api)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;if xo.results_status() == 'failed':&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 'Error:\n'&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print xo.sprintf()&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sys.exit(1)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;print 'VMDK files on '+volpath+':\n'&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;for file in xo.child_get('attributes-list').children_get():&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if 'flat.vmdk' in file.child_get_string('name'):&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print file.child_get_string('name')&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in advance!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
    <pubDate>Thu, 05 Jun 2025 05:29:25 GMT</pubDate>
    <dc:creator>ROMEROJNR</dc:creator>
    <dc:date>2025-06-05T05:29:25Z</dc:date>
    <item>
      <title>Iterating over directory tree (recursively)</title>
      <link>https://community.netapp.com/t5/Software-Development-Kit-SDK-and-API-Discussions/Iterating-over-directory-tree-recursively/m-p/75153#M931</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;Hi community,&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;I'm trying to fetch all the file inside a given directory recursively. Are there any easy way to implement this using the API?&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;TABLE border="1" class="jiveBorder" jive-data-cell="{&amp;amp;quot;color&amp;amp;quot;:&amp;amp;quot;#575757&amp;amp;quot;,&amp;amp;quot;textAlign&amp;amp;quot;:&amp;amp;quot;left&amp;amp;quot;,&amp;amp;quot;padding&amp;amp;quot;:&amp;amp;quot;NaN&amp;amp;quot;,&amp;amp;quot;backgroundColor&amp;amp;quot;:&amp;amp;quot;#FFFF99&amp;amp;quot;,&amp;amp;quot;fontFamily&amp;amp;quot;:&amp;amp;quot;arial,helvetica,sans-serif&amp;amp;quot;}" jive-data-header="{&amp;amp;quot;color&amp;amp;quot;:&amp;amp;quot;#FFFFFF&amp;amp;quot;,&amp;amp;quot;backgroundColor&amp;amp;quot;:&amp;amp;quot;#6690BC&amp;amp;quot;,&amp;amp;quot;textAlign&amp;amp;quot;:&amp;amp;quot;center&amp;amp;quot;,&amp;amp;quot;padding&amp;amp;quot;:&amp;amp;quot;2&amp;amp;quot;}" style="border: 1px solid #000000; width: 551px; height: 698px;"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TH style="text-align: center; color: #ffffff; padding: 2px; background-color: #6690bc;"&gt;&lt;STRONG&gt;example.py&lt;/STRONG&gt;&lt;/TH&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD style="color: #575757; text-align: left; padding: 0px; font-family: arial, helvetica, sans-serif; background-color: #ffff99;"&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;import sys&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;sys.path.append('&lt;SPAN style="color: #00ccff;"&gt;[omitted output]&lt;/SPAN&gt;')&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;from NaServer import *&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;s = NaServer('&lt;SPAN style="color: #00ccff;"&gt;[omitted output]&lt;/SPAN&gt;', 1 , 20)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;s.set_server_type('FILER')&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;s.set_transport_type('HTTPS')&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;s.set_port(443)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;s.set_style('LOGIN')&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;s.set_vserver('&lt;SPAN style="color: #00ccff; font-family: 'courier new', courier;"&gt;[omitted output]&lt;/SPAN&gt;')&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;s.set_admin_user('&lt;SPAN style="color: #00ccff;"&gt;[omitted output]&lt;/SPAN&gt;', '&lt;SPAN style="color: #00ccff;"&gt;[omitted output]&lt;/SPAN&gt;')&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;volpath = '/vol/&lt;SPAN style="color: #00ccff;"&gt;[omitted output]&lt;/SPAN&gt;'&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;api = NaElement('file-list-directory-iter')&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;api.child_add_string('path',volpath)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;xi = NaElement('desired-attributes')&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;api.child_add(xi)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;xi1 = NaElement('file-info')&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;xi.child_add(xi1)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;xi1.child_add_string('name','&amp;lt;name&amp;gt;')&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;xi1.child_add_string('file-type','&amp;lt;file-type&amp;gt;')&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;xo = s.invoke_elem(api)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;if xo.results_status() == 'failed':&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print 'Error:\n'&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; print xo.sprintf()&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp; sys.exit(1)&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;print 'VMDK files on '+volpath+':\n'&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;for file in xo.child_get('attributes-list').children_get():&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; if 'flat.vmdk' in file.child_get_string('name'):&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN style="color: #008080; font-family: 'courier new', courier;"&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; print file.child_get_string('name')&lt;/SPAN&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;Thanks in advance!&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Thu, 05 Jun 2025 05:29:25 GMT</pubDate>
      <guid>https://community.netapp.com/t5/Software-Development-Kit-SDK-and-API-Discussions/Iterating-over-directory-tree-recursively/m-p/75153#M931</guid>
      <dc:creator>ROMEROJNR</dc:creator>
      <dc:date>2025-06-05T05:29:25Z</dc:date>
    </item>
    <item>
      <title>Re: Iterating over directory tree (recursively)</title>
      <link>https://community.netapp.com/t5/Software-Development-Kit-SDK-and-API-Discussions/Iterating-over-directory-tree-recursively/m-p/75157#M932</link>
      <description>&lt;HTML&gt;&lt;HEAD&gt;&lt;/HEAD&gt;&lt;BODY&gt;&lt;P&gt;I found the answer using this same logic:&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;import os&lt;/P&gt;&lt;P&gt;&lt;/P&gt;&lt;P&gt;def list_files(path):&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;for i in os.listdir(path):&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;if os.path.isdir(path+'/'+i):&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;list_files(path+'/'+i)&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;else:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;print path+'/'+i&lt;/P&gt;&lt;/BODY&gt;&lt;/HTML&gt;</description>
      <pubDate>Fri, 05 Sep 2014 13:03:17 GMT</pubDate>
      <guid>https://community.netapp.com/t5/Software-Development-Kit-SDK-and-API-Discussions/Iterating-over-directory-tree-recursively/m-p/75157#M932</guid>
      <dc:creator>ROMEROJNR</dc:creator>
      <dc:date>2014-09-05T13:03:17Z</dc:date>
    </item>
  </channel>
</rss>

