<p>在Blcknght的评论之后,我删除了“\\”和操作系统特有的东西。<strong>这个脚本现在可以在windows和linux上运行了,而且效果很好。</strong>我在主脚本上重新开始了。我没有使用xml包,但是为此我创建了两个函数,它们使用操作系统列表目录()而不是手术室步行. 下面是脚本。在</p>
<p>如果你读了你注意到的主要部分的脚本有很多“for”循环和“If”语句。对于每个子文件夹,脚本将重复执行相同的操作。但我想不出,怎么把这个“for”循环。在</p>
<p>我可以找出在给定的搜索文件夹中有多少子文件夹。但是我需要一些帮助如何为主脚本创建一个循环。我需要一些帮助:)</p>
<pre><code>##This Script creates an Index as XML file of a filepath
import os
#variable
CrawlingStartpoint = "D:\DATA\WorldDEM"
XMLfile = r"python.xml"
XMLLocation = r"D:\DATA"
XMLFileLocation = XMLLocation + os.path.sep + XMLfile
text = ""
#Standard Starting text for the XML file
text += "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<ShoeBox>\n<Version>2011</Version>\n<FileGroup>\n<Title>XMLBox: "
text += XMLfile + "</Title>\n<Description>" + CrawlingStartpoint + "</Description>\n<Expanded>false</Expanded>\n<AddOutputs>false</AddOutputs>\n"
#function with a directory as input, give back all subdirectories in a list
def getdirs(startingdir):
folderlist = list()
folders = os.listdir(startingdir)
for folder in folders:
if os.path.isdir(os.path.join(startingdir, folder)) == True:
folderlist.append(os.path.join(startingdir, folder))
return folderlist
#function with a directory as input, give back all files that ends with img,jp2,tif,shp and dxf in a list
def getfiles(startingdir):
filelist = list()
bestanden = os.listdir(startingdir)
for bestand in bestanden:
if os.path.isfile(os.path.join(startingdir, bestand)) == True:
if bestand.endswith(".img") or bestand.endswith(".jp2") or bestand.endswith(".tif"):
filelist.append(os.path.join(startingdir, bestand))
return filelist
#Scans all files and subfolders. Scans up to the 13th subfolder.
text += "<FileGroup>\n<Title>" + CrawlingStartpoint + "</Title>\n<Description>noop</Description>\n<Expanded>false</Expanded>\n<AddOutputs>false</AddOutputs>\n"
if getdirs(CrawlingStartpoint):
for dir0 in getdirs(CrawlingStartpoint):
text += "<FileGroup>\n<Title>" + dir0 + "</Title>\n<Description>noop</Description>\n<Expanded>false</Expanded>\n<AddOutputs>false</AddOutputs>\n"
if getdirs(dir0):
for dir1 in getdirs(dir0):
text += "<FileGroup>\n<Title>" + dir1 + "</Title>\n<Description>noop</Description>\n<Expanded>false</Expanded>\n<AddOutputs>false</AddOutputs>\n"
if getdirs(dir1):
for dir2 in getdirs(dir1):
text += "<FileGroup>\n<Title>" + dir2 + "</Title>\n<Description>noop</Description>\n<Expanded>false</Expanded>\n<AddOutputs>false</AddOutputs>\n"
if getdirs(dir2):
for dir3 in getdirs(dir2):
text += "<FileGroup>\n<Title>" + dir3 + "</Title>\n<Description>noop</Description>\n<Expanded>false</Expanded>\n<AddOutputs>false</AddOutputs>\n"
if getdirs(dir3):
for dir4 in getdirs(dir3):
text += "<FileGroup>\n<Title>" + dir4 + "</Title>\n<Description>noop</Description>\n<Expanded>false</Expanded>\n<AddOutputs>false</AddOutputs>\n"
if getdirs(dir4):
for dir5 in getdirs(dir4):
text += "<FileGroup>\n<Title>" + dir5 + "</Title>\n<Description>noop</Description>\n<Expanded>false</Expanded>\n<AddOutputs>false</AddOutputs>\n"
if getdirs(dir5):
for dir6 in getdirs(dir5):
text += "<FileGroup>\n<Title>" + dir6 + "</Title>\n<Description>noop</Description>\n<Expanded>false</Expanded>\n<AddOutputs>false</AddOutputs>\n"
if getdirs(dir6):
for dir7 in getdirs(dir6):
text += "<FileGroup>\n<Title>" + dir7 + "</Title>\n<Description>noop</Description>\n<Expanded>false</Expanded>\n<AddOutputs>false</AddOutputs>\n"
if getdirs(dir7):
for dir8 in getdirs(dir7):
text += "<FileGroup>\n<Title>" + dir8 + "</Title>\n<Description>noop</Description>\n<Expanded>false</Expanded>\n<AddOutputs>false</AddOutputs>\n"
if getdirs(dir8):
for dir9 in getdirs(dir8):
text += "<FileGroup>\n<Title>" + dir9 + "</Title>\n<Description>noop</Description>\n<Expanded>false</Expanded>\n<AddOutputs>false</AddOutputs>\n"
if getdirs(dir9):
for dir10 in getdirs(dir9):
text += "<FileGroup>\n<Title>" + dir10 + "</Title>\n<Description>noop</Description>\n<Expanded>false</Expanded>\n<AddOutputs>false</AddOutputs>\n"
if getdirs(dir10):
for dir11 in getdirs(dir10):
text += "<FileGroup>\n<Title>" + dir11 + "</Title>\n<Description>noop</Description>\n<Expanded>false</Expanded>\n<AddOutputs>false</AddOutputs>\n"
if getdirs(dir11):
for dir12 in getdirs(dir11):
text += "<FileGroup>\n<Title>" + dir12 + "</Title>\n<Description>noop</Description>\n<Expanded>false</Expanded>\n<AddOutputs>false</AddOutputs>\n"
if getdirs(dir12):
for dir13 in getdirs(dir12):
text += " Error to much subfolders " + dir13 + "\n"
if getdirs(dir13):
for dir14 in getdirs(dir13):
text += " Error to much subfolders " + dir14 + "\n"
if getfiles(dir13):
for files13 in getfiles(dir13):
text += "<File>\n<Path>" + files13 + "</Path>\n<Type>raster</Type>\n<Description></Description>\n</File>\n"
text += "</FileGroup>\n"
if getfiles(dir12):
for files12 in getfiles(dir12):
text += "<File>\n<Path>" + files12 + "</Path>\n<Type>raster</Type>\n<Description></Description>\n</File>\n"
text += "</FileGroup>\n"
if getfiles(dir11):
for files11 in getfiles(dir11):
text += "<File>\n<Path>" + files11 + "</Path>\n<Type>raster</Type>\n<Description></Description>\n</File>\n"
text += "</FileGroup>\n"
if getfiles(dir10):
for files10 in getfiles(dir10):
text += "<File>\n<Path>" + files10 + "</Path>\n<Type>raster</Type>\n<Description></Description>\n</File>\n"
text += "</FileGroup>\n"
if getfiles(dir9):
for files9 in getfiles(dir9):
text += "<File>\n<Path>" + files9 + "</Path>\n<Type>raster</Type>\n<Description></Description>\n</File>\n"
text += "</FileGroup>\n"
if getfiles(dir8):
for files8 in getfiles(dir8):
text += "<File>\n<Path>" + files8 + "</Path>\n<Type>raster</Type>\n<Description></Description>\n</File>\n"
text += "</FileGroup>\n"
if getfiles(dir7):
for files7 in getfiles(dir7):
text += "<File>\n<Path>" + files7 + "</Path>\n<Type>raster</Type>\n<Description></Description>\n</File>\n"
text += "</FileGroup>\n"
if getfiles(dir6):
for files6 in getfiles(dir6):
text += "<File>\n<Path>" + files6 + "</Path>\n<Type>raster</Type>\n<Description></Description>\n</File>\n"
text += "</FileGroup>\n"
if getfiles(dir5):
for files5 in getfiles(dir5):
text += "<File>\n<Path>" + files5 + "</Path>\n<Type>raster</Type>\n<Description></Description>\n</File>\n"
text += "</FileGroup>\n"
if getfiles(dir4):
for files4 in getfiles(dir4):
text += "<File>\n<Path>" + files4 + "</Path>\n<Type>raster</Type>\n<Description></Description>\n</File>\n"
text += "</FileGroup>\n"
if getfiles(dir3):
for files3 in getfiles(dir3):
text += "<File>\n<Path>" + files3 + "</Path>\n<Type>raster</Type>\n<Description></Description>\n</File>\n"
text += "</FileGroup>\n"
if getfiles(dir2):
for files2 in getfiles(dir2):
text += "<File>\n<Path>" + files2 + "</Path>\n<Type>raster</Type>\n<Description></Description>\n</File>\n"
text += "</FileGroup>\n"
if getfiles(dir1):
for files1 in getfiles(dir1):
text += "<File>\n<Path>" + files1 + "</Path>\n<Type>raster</Type>\n<Description></Description>\n</File>\n"
text += "</FileGroup>\n"
if getfiles(dir0):
for files0 in getfiles(dir0):
text += "<File>\n<Path>" + files0 + "</Path>\n<Type>raster</Type>\n<Description></Description>\n</File>\n"
text += "</FileGroup>\n"
if getfiles(CrawlingStartpoint):
for filesCrawlingStartpoint in getfiles(CrawlingStartpoint):
text += "<File>\n<Path>" + filesCrawlingStartpoint + "</Path>\n<Type>raster</Type>\n<Description></Description>\n</File>\n"
text += "</FileGroup>\n"
#Standard Closing text for the XML file
text += "</FileGroup>\n</XMLBox>"
print text
#Write the filelocations stored in text in the textfile
myfile = open(XMLFileLocation,'a')
myfile.write(text)
myfile.close()
</code></pre>