আর্কম্যাপে পাইথন স্ক্রিপ্টটি স্বরূপকরণ করছে?


17

আমি চেষ্টা করেছি sys.exit , তবে মনে হচ্ছে এটি আরকম্যাপ 10 এ কাজ করবে না।

কেউ কীভাবে এটি করতে জানেন?

উত্তর:


16

আর্কপাই উদাহরণ থেকে দেখে মনে হচ্ছে sys.exit()কোনও স্ক্রিপ্ট শুরুর সঠিক উপায়।

পাইথন ডকুমেন্টেশন নোট যে sys.exit():

সিস্টেমএক্সিট ব্যতিক্রম উত্থাপনের মাধ্যমে প্রয়োগ করা হয়, সুতরাং চেষ্টা স্টেটমেন্টের পরিশেষে ক্লজগুলি দ্বারা নির্দিষ্ট ক্লিনআপ ক্রিয়াকলাপগুলি সম্মানিত হয়, এবং বহিরাগত স্তরে প্রস্থান প্রয়াসকে থামানো সম্ভব।

এটির সাথে মোকাবিলা করার সহজ উপায়টি হ'ল একটি ব্যতিক্রম হ্যান্ডলারটিতে আপনার স্ক্রিপ্টটি মোড়ানো:

import sys
import arcpy

try:
    #do stuff
    sys.exit(0)
except SystemExit:
    pass

তবে এটি বিশেষভাবে মার্জিত নয় এবং আপনার পুরো প্রকল্পটির পুনর্গঠন প্রয়োজন, অন্য স্তর ইন্ডেন্টেশন উল্লেখ না করে। এছাড়াও, আপনার কোডের অন্য একটি অংশ একটি SystemExitব্যতিক্রম উত্থাপন করে এমন সম্ভাব্য পরিস্থিতিতে আপনি কখনই এটি সম্পর্কে জানবেন না ... অন্য অবহেলিত তবে সম্ভবত আরও ভাল সমাধানটি অন্য ফাংশনে sys.exit () এ কল মোড়ানো:

import sys
import arcpy

def finish(arg=None):
    try:
        sys.exit(arg)
    except SystemExit:
        pass

#do stuff
finish()

এখন আপনি কল করতে পারেন finish(), finish(1)অথবাfinish('Error message') আপনি sys.exit কল করতে পারবেন বলে আশা করা ঠিক ()।

অবশ্যই, আমরা অন্যান্য পরিস্থিতিতে আমাদের ব্যতিক্রম খাবারের পদ্ধতিকে ব্যবহার করতে চাই এবং এটি পাইথন হওয়ায় আমরা সাধারণীকরণ করতে পারি এবং একটি দরকারী, বহুমুখী সাজসজ্জা তৈরি করতে পারি:

import sys
import arcpy

def eat_exception(fn, exception):
    def safe(*v, **k):
        try:
            fn(*v, **k)
        except exception:
            pass
    return safe

finish = eat_exception(sys.exit, SystemExit)

#do stuff
finish()
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.