दिलचस्प पोस्ट
क्या मैं = आई ++ वास्तव में एक अपरिभाषित व्यवहार है? PHP का उपयोग करते हुए सीएसवी फ़ाइल को कैसे पार्स करना है इंटरनेट एक्सप्लोरर में 'स्क्रिप्ट' टैग के लिए 'ऑनलोड' हैंडलर एक UIView subclass के लिए एक Nib लोड करने का सही तरीका मैं फ्लोट में vec4 rgba मान को कैसे रूपांतरित कर सकता हूं? जावा सरणी छपाई क्यों करता है मेमोरी स्थान दिखाता है CMTime और CMTimeMake को समझने की कोशिश कर रहा है आईपैड सफारी: लिंक को हिट होने पर त्वरित पलक प्रभाव को अक्षम कैसे करें पूर्ण पथ से फ़ाइल का नाम और पथ पार्स करें एक DLL में निर्यात किए गए कार्यों के हस्ताक्षर प्राप्त करें : आखिरी बच्चा उम्मीद के मुताबिक काम नहीं कर रहा है? एकल जनक इकाई के साथ कोर डेटा प्रदर्शन आर और वस्तु उन्मुख प्रोग्रामिंग गैर-एन्कोडेड वर्णों के साथ PHP unserialize विफल हो जाता है? UIStatusBarStyle PreferredStatusBarStyle आईओएस 7 पर काम नहीं करता है

पायथन उपप्रोसेड वाइल्डकार्ड उपयोग

import os import subprocess proc = subprocess.Popen(['ls','*.bc'], stdout=subprocess.PIPE, stderr=subprocess.PIPE) out,err = proc.communicate() print out 

इस स्क्रिप्ट को सभी फाइलों को .बीसी प्रत्यय के साथ प्रिंट करना चाहिए, हालांकि यह एक खाली सूची देता है। अगर मैं ls * .bc मैन्युअल रूप से कमांड लाइन में करता हूँ तो यह काम करता है स्क्रिप्ट के अंदर ['एलएस', 'टेस्ट.बीसी'] करना, साथ ही साथ काम करता है, लेकिन किसी कारण से स्टार का प्रतीक काम नहीं करता है .. कोई भी विचार?

Solutions Collecting From Web of "पायथन उपप्रोसेड वाइल्डकार्ड उपयोग"

शेल इंटरप्रेटर के माध्यम से कमांड को निष्पादित करने के लिए आपको shell=True आपूर्ति करने की आवश्यकता है। यदि आप ऐसा करते हैं, तो आप अब पहली तर्क के रूप में एक सूची नहीं दे सकते हैं, क्योंकि तर्क तब उद्धृत किए जाएंगे इसके बजाय, कच्चे कमांडलाइन को निर्दिष्ट करें जैसा कि आप इसे शेल में भेजना चाहते हैं:

  proc = subprocess.Popen('ls *.bc', shell=True, stdout=subprocess.PIPE, stderr=subprocess.PIPE) 

* ग्लोब का विस्तार शेल का हिस्सा है, लेकिन डिफॉल्ट subprocess द्वारा आपके कमानों को एक शेल के माध्यम से नहीं भेजा जाता है, इसलिए कमांड (प्रथम तर्क, ls ) निष्पादित होता है, फिर एक शाब्दिक * तर्क के रूप में उपयोग किया जाता है

यह एक अच्छी बात है, सबप्रोसेस डॉक्स के "अक्सर उपयोग किए गए तर्कों" अनुभाग में चेतावनी ब्लॉक देखें। यह मुख्य रूप से सुरक्षा संबंधी निहितार्थों पर चर्चा करता है, लेकिन यह भी मूर्खतापूर्ण प्रोग्रामिंग त्रुटियों से बचने में मदद कर सकता है (क्योंकि इसके बारे में चिंता करने के लिए कोई जादू खोल अक्षर नहीं है)

shell=True साथ मेरी मुख्य शिकायत यह आमतौर पर इसका मतलब है कि समस्या के बारे में जाने का एक बेहतर तरीका है – उदाहरण के साथ, आपको glob मॉड्यूल का उपयोग करना चाहिए:

 import glob files = glob.glob("*.bc") print files # ['file1.bc', 'file2.bc'] 

यह तेज़ हो जाएगा (कोई प्रक्रिया स्टार्टअप ओवरहेड नहीं), अधिक विश्वसनीय और क्रॉस प्लेटफॉर्म (एक ls कमांड वाले प्लेटफॉर्म पर निर्भर नहीं)