file भोजन - एक चींटी लक्ष्य चलाने के लिए चींटी कार्य केवल तभी होता है जब कोई फ़ाइल मौजूद हो?




कितना वजन (6)

Available और Condition

<target name="check-abc">
    <available file="abc.txt" property="abc.present"/>
</target>

<target name="do-if-abc" depends="check-abc" if="abc.present">
    ...
</target> 

क्या कोई एएनटी कार्य है जो केवल एक ब्लॉक निष्पादित करेगा यदि कोई दी गई फ़ाइल मौजूद है? मुझे समस्या है कि मेरे पास एक सामान्य एंटी स्क्रिप्ट है जो कुछ विशेष प्रसंस्करण करना चाहिए, लेकिन केवल तभी जब कोई विशिष्ट कॉन्फ़िगरेशन फ़ाइल मौजूद हो।


मुझे लगता है कि इस समान उत्तर का संदर्भ देने लायक है: https://.com/a/5288804/64313

यहां एक और त्वरित समाधान है। <available> टैग का उपयोग करके इस पर अन्य विविधताएं संभव हैं:

# exit with failure if no files are found
<property name="file" value="${some.path}/some.txt" />
<fail message="FILE NOT FOUND: ${file}">
    <condition><not>
        <available file="${file}" />
    </not></condition>
</fail>

आप इसे आवश्यक नामों के बराबर नाम वाली फाइलों की सूची के साथ ऑपरेशन करने के लिए कर सकते हैं। यह एक विशेष लक्ष्य बनाने के बजाय बहुत आसान और प्रत्यक्ष है। और आपको किसी भी अतिरिक्त उपकरण, केवल शुद्ध चींटी की आवश्यकता नहीं है।

<delete>
    <fileset includes="name or names of file or files you need to delete"/>
</delete>

देखें: FileSet


फ़ाइल नाम फ़िल्टर जैसे DB_*/**/*.sql का उपयोग करके जांचें

वाइल्डकार्ड फ़िल्टर से संबंधित एक या अधिक फाइल मौजूद होने पर एक क्रिया करने के लिए यहां एक भिन्नता है। यही है, आप फ़ाइल का सही नाम नहीं जानते हैं।

यहां, हम " डीबी_ * " नामक किसी भी उप-निर्देशिका में " * .sql " फ़ाइलों की तलाश कर रहे हैं, जो पुनरावर्ती रूप से हैं। आप फ़िल्टर को अपनी जरूरतों के अनुसार समायोजित कर सकते हैं।

एनबी: अपाचे चींटी 1.7 और उच्चतम!

मेल खाने वाली फाइल मौजूद होने पर संपत्ति सेट करने का लक्ष्य यहां दिया गया है:

<target name="check_for_sql_files">
    <condition property="sql_to_deploy">
        <resourcecount when="greater" count="0">
            <fileset dir="." includes="DB_*/**/*.sql"/>
        </resourcecount>
    </condition>
</target>

यहां एक "सशर्त" लक्ष्य है जो केवल तभी चलाता है जब फाइल मौजूद हों:

<target name="do_stuff" depends="check_for_sql_files" if="sql_to_deploy">
    <!-- Do stuff here -->
</target>

यह कोडिंग परिप्रेक्ष्य से थोड़ा अधिक समझ सकता है (एंटी-कॉन्ट्रिब के साथ उपलब्ध: http://ant-contrib.sourceforge.net/ ):

<target name="someTarget">
    <if>
        <available file="abc.txt"/>
        <then>
            ...
        </then>
        <else>
            ...
        </else>
    </if>
</target>

os.path.isfile() , os.path.isdir() और os.path.exists() साथ फ़ाइलों और फ़ोल्डर्स के लिए परीक्षण

यह मानते हुए कि "पथ" एक वैध पथ है, यह तालिका दिखाती है कि प्रत्येक फ़ंक्शन द्वारा फ़ाइलों और फ़ोल्डर्स के लिए क्या किया जाता है:

आप यह भी जांच सकते हैं कि एक्सटेंशन प्राप्त करने के लिए os.path.splitext() का उपयोग कर फ़ाइल एक निश्चित प्रकार की फ़ाइल है (यदि आप इसे पहले से नहीं जानते हैं)

>>> import os
>>> path = "path to a word document"
>>> os.path.isfile(path)
True
>>> os.path.splitext(path)[1] == ".docx" # test if the extension is .docx
True






file ant build-automation