2009-09-22 11 views
5

अगर मैं स्पष्ट रूप से एक विंडोज़ मशीन पर अजगर का उपयोग कर एक दूरस्थ होस्ट पर एक साझा निर्देशिका की सामग्री को सूचीबद्ध करने के प्रयास करते हैं, आपरेशन सफल होता है, उदाहरण के लिए, निम्नलिखित स्निपेट ठीक काम करता है:सूची नेटवर्क शेयर

os.listdir("\\\\remotehost\\share") 

हालांकि, मैं अगर नेटवर्क ड्राइव/निर्देशिका दूरस्थ होस्ट पर उपलब्ध सूची, अजगर में विफल रहता है, जिनमें से एक उदाहरण निम्नलिखित कोड का टुकड़ा में दिखाया गया है प्रयास:

os.listdir("\\\\remotehost") 

किसी को यह क्यों नहीं है के बारे में पता है काम ?, किसी भी मदद/कामकाज की सराहना की है।

+1

क्या उपयोगकर्ता को शेयर सूचीबद्ध करने की अनुमति है? या बस \\ remotehost \ share में निर्देशिका सूचीबद्ध करने की अनुमति है? –

+0

हाँ, उपयोगकर्ता के पास शेयरों के लिए पर्याप्त अनुमतियां हैं, भले ही मैं रिमोट होस्ट को अपनी स्थानीय मशीन पर सेट करता हूं, फिर भी मैं वही व्यवहार –

+1

देखता हूं बस एक छोटी सी युक्ति: इस तरह के विशाल बैकस्लैश ट्रेल्स से निपटने पर, यह आम तौर पर आसान होता है एक कच्ची स्ट्रिंग के रूप में स्ट्रिंग को इनपुट करने के लिए, इस तरह: आर '\\ remotehost \ share' बनाम \\\\ remotehost \\ share '। यह मुझे नियमित रूप से सिरदर्द बचाता है। –

उत्तर

4

हो सकता है pysmb मदद कर सकते हैं

+0

ने इसे आजमाया, प्रारंभिक प्रयास काम करने लगता है :-) –

0

क्षमा करें। मैं इसे कोशिश करने में सक्षम नहीं हूं क्योंकि मैं एक पीसी में नहीं हूं। क्या आपने कोशिश की है:

os.listdir("\\\\remotehost\\") 
+0

ने कोशिश की, कोई खुशी नहीं –

1

मुझे यकीन है कि ओपी इस सवाल के बारे अब तक भूल गया है हूँ, लेकिन यहाँ है (शायद) देखें एक स्पष्टीकरण: जैसे मैंने किया था

http://www.python.org/doc/faq/windows/#why-does-os-path-isdir-fail-on-nt-shared-directories

मामले में किसी और, इस समस्या के साथ होता है।

1

किसी को अब भी सोच खिड़कियों पर शीर्ष स्तर पर नेटवर्क शेयरों को सूचीबद्ध करने के लिए कैसे के लिए, आप win32net मॉड्यूल का उपयोग कर सकते हैं:

import win32net 
shares, _, _ = win32net.NetShareEnum('remotehost',0) 

पूर्णांक लौटे जानकारी के प्रकार को नियंत्रित करता है लेकिन आप केवल की एक सूची चाहते हैं तब शेयर 0 करेंगे।

यह काम करता है जहां os.listdir ('\\ remotehost') विफल रहता है क्योंकि \\ remotehost 'वास्तविक फ़ोल्डर नहीं है हालांकि विंडोज़ इसे एक जैसा प्रदर्शित कर सकता है।

संबंधित मुद्दे