मैं उपप्रक्रिया मॉड्यूल से Popen समारोह का उपयोग कर रहा एक कमांड लाइन उपकरण निष्पादित करने के लिए:subprocess.Popen args पैरामीटर की अधिकतम लंबाई क्या है?
subprocess.Popen(args, bufsize=0, executable=None, stdin=None, stdout=None, stderr=None, preexec_fn=None, close_fds=False, shell=False, cwd=None, env=None, universal_newlines=False, startupinfo=None, creationflags=0)
उपकरण मैं उपयोग कर रहा हूँ फ़ाइलें है कि यह तो प्रक्रियाओं की एक सूची लेता है। कुछ मामलों में, फाइलों की यह सूची बहुत लंबी हो सकती है। क्या तर्क पैरामीटर अधिकतम लंबाई को खोजने का कोई तरीका है?
Traceback (most recent call last):
File "dump_output_sopuids.py", line 68, in <module>
uid_map = create_sopuid_to_path_dict_dcmdump(dicom_files)
File "dump_output_sopuids.py", line 41, in create_sopuid_to_path_dict_dcmdump
dcmdump_output = subprocess.Popen(cmd,stdout=subprocess.PIPE).communicate(0)[0]
File "c:\python26\lib\subprocess.py", line 621, in __init__
errread, errwrite)
File "c:\python26\lib\subprocess.py", line 830, in _execute_child
startupinfo)
WindowsError: [Error 206] The filename or extension is too long
वहाँ एक सामान्य तरीके से इस अधिकतम लंबाई को खोजने के लिए है: के साथ फ़ाइलों की एक बड़ी संख्या उपकरण के लिए पारित किया जा रहा है, मैं निम्न त्रुटि मिल रहा है? मुझे msdn पर निम्न आलेख मिला: Command prompt (Cmd. exe) command-line string limitation लेकिन मैं मान में हार्ड कोड नहीं चाहता हूं। मैं एकाधिक कॉल में कमांड को तोड़ने के लिए रन टाइम पर मान प्राप्त करूंगा।
Windows XP पर अजगर 2.6 का उपयोग कर रहा 64
संपादित करें: जोड़ने कोड उदाहरण
paths = ['file1.dat','file2.dat',...,'fileX.dat']
cmd = ['process_file.exe','+p'] + paths
cmd_output = subprocess.Popen(cmd,stdout=subprocess.PIPE).communicate(0)[0]
समस्या होती है क्योंकि paths
सूची में प्रत्येक वास्तविक प्रवेश आमतौर पर एक बहुत लंबे फ़ाइल पथ है और वहाँ उनमें से कई हजार हैं।
मुझे process_file.exe
पर एकाधिक कॉल में कमांड को तोड़ने में कोई फर्क नहीं पड़ता। मैं अधिकतम लंबाई प्राप्त करने के लिए एक सामान्य तरीका ढूंढ रहा हूं जो कि तर्क हो सकता है, इसलिए मुझे पता है कि प्रत्येक रन के लिए कितने पथ भेजना है।
क्या आप आर्ग के लिए क्या प्रदान का एक उदाहरण मूल्य प्रदान कर सकता है? –
मैं पार्टी के लिए काफी देर हो चुकी हूं लेकिन मैं यह जोड़ना चाहता हूं कि मुझे कई प्रविष्टियों को जोड़ने के बाद मेरे पाथ पर्यावरण चर के कारण बहुत ही त्रुटि हो रही है। – RedX