अजगर स्क्रिप्ट के लिए व्हॉट्सएप के साथ कई फाइलें पास करना


0

मुझे .svg के लिए बहुत सारी .ai फाइलें बदलनी पड़ती हैं, और मुझे ai2svg टूल मिल गया है। मैंने कोशिश की

for i in `find ./ -type f -name \*.ai`; do python ai2svg.py "$i"; done

लेकिन मुझे त्रुटियाँ मिलती हैं

IOError: [Errno 2] ऐसी कोई फ़ाइल या निर्देशिका नहीं: 'प्रोफ़ाइल' ट्रेसबैक (सबसे हालिया कॉल अंतिम): फ़ाइल "ai2svg.py", पंक्ति 171, inf = open (sys.argvv [1]) में

जब फ़ाइल नाम "प्रोफ़ाइल परीक्षण। दाई" है। वहाँ कोई रास्ता नहीं है इसके अलावा, .ai फ़ाइलों से नाम में सभी व्हाट्सएप को हटाने के लिए पहले से?

धन्यवाद।

जवाबों:


1

यह यह करेगा:

find . -type f -name \*.ai -exec python ai2svg.py {} \;

यदि ai2svg.pyकई फ़ाइलों (जैसे अधिकांश * निक्स टूल) के साथ काम करते हैं, तो आप कमांड को कम से कम समय चलाने के लिए कर सकते हैं:

find . -type f -name \*.ai -exec python ai2svg.py {} +

यदि आप केवल वर्तमान निर्देशिका में फ़ाइलों के बारे में परवाह करते हैं, तो आप इसके लिए मानक लूप का उपयोग कर सकते हैं:

for file in *.ai
do
    python ai2svg.py "$file"
done

मैंने "ढूंढना ./type f -name * .ai -print0 | IFS = read -r -d '' फ़ाइल के बारे में पता लगा लिया है; पायथन ai2svg.py" $ file "; क्या यह सच है कि खोजने के लिए छोरों के साथ एक बुरा अभ्यास है?
मिसिर

0

इसे करने का सही तरीका निम्नलिखित है:

find . -maxdepth 1 -type f -name '*.ai' -print0 | while read -d '' -r file; do python ai2svg.py "$file"; done

सूचना -print0का विकल्प findहै जो एक साथ के साथ -d ''में readनई-पंक्तियों और टैब सहित फ़ाइल नाम, किसी भी खाली स्थान के पात्रों का ख्याल रखता है।


यह POSIX संगत नहीं है, और NUL सेपरेटर का उपयोग केवल तभी आवश्यक है जब आप -execफ़ाइल नाम पर कुछ अधिक जटिल करना चाहते हैं ।
lbb0
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.