ArcPy का उपयोग करके फ़ाइल सत्यापन?


13

मेरे पास एक स्क्रिप्ट है जो एक निर्देशिका को स्कैन करता है और बुनियादी रेखापुंज डेटा जानकारी को आउटपुट करता है जैसे कि फ़ाइल का नाम, प्रारूप, बैंड की संख्या और आदि। मुझे इसे बनाने का एक तरीका चाहिए ताकि निर्देशिका में रेखापुंज डेटा (यानी, कुछ और) न हो रैस्टर डेटा की तुलना में), एक संदेश प्रदर्शित किया जाता है जो बताता है कि निर्देशिका में सही डेटा प्रकार नहीं है।

मुझे पता है कि आर्कपी में एक Describe()फ़ंक्शन है जिसका उपयोग मैं किसी फ़ोल्डर में डेटा के प्रकार को निर्धारित करने के लिए कर सकता हूं, लेकिन यह सुनिश्चित नहीं है कि इसे कैसे लागू किया जाए। अभी तक मेरे पास इतना ही है:

rasterList = arcpy.ListRasters("*", "ALL")
filesType = arcpy.DataType('RasterDataset') # Can use `DatasetType` as well. 
                                            # I've tested this function to describe
                                            # raster data and ArcPy prints out
                                            # 'RasterDataset', that is why I have it 
                                            # there in the brackets.
for name in rasterList:
    if rasterList == filesType:
        print ("\nFilename:"), name
    else:
        print ("This directory does not contain any raster data.")

कोई सुझाव?

जवाबों:


16

कैसे कुछ सरल के बारे में:

if len(rasterList) == 0:
    print ("This directory does not contain any raster data.")
else:
    # Your raster processing code

len()समारोह लौटे स्ट्रिंग / सूची की लंबाई की गणना करता है, इसलिए यदि यह रिटर्न 0तो आप फ़ोल्डर कसौटी मिलान हुआ कुछ भी नहीं पता (इस मामले में, एक रेखापुंज जा रहा है)। इस तरह, यदि फ़ोल्डर में कोई भी चीर-फाड़ होती है (भले ही हर फ़ाइल एक रेखापुंज न हो) उन्हें संसाधित किया जाएगा।


धन्यवाद nmpeterson! वह यह था। मुझे पता था कि मुझे कुछ आसान याद आ रहा है। विश्वास नहीं कर सकता मैं len()समारोह के बारे में नहीं सोचा था ।
23
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.