2009-10-08 7 views
22

के लिए पायथन क्लाइंट लाइब्रेरी मैं अपने एप्लिकेशन में कार्यक्षमता का एक टुकड़ा लागू करना चाहता हूं जो वेबएडीवी सर्वर पर फ़ाइलों को अपलोड और मैनिपुलेट करता है। मैं एक परिपक्व पायथन पुस्तकालय की तलाश में हूं जो रिमोट फाइलों के साथ काम करने के लिए os.* मॉड्यूल के समान इंटरफ़ेस प्रदान करेगा। गूगलिंग ने पाइथन में वेबडीवीवी के विकल्पों की चपेट में बदल दिया है, लेकिन मैं जानना चाहता हूं कि इन दिनों व्यापक उपयोग किस प्रकार किया जा रहा है।वेबडावी

उत्तर

1

मुझे किसी विशेष रूप से पता नहीं है, लेकिन आपके प्लेटफ़ॉर्म के आधार पर, फ़ाइल सिस्टम के माध्यम से WebDAV- सेवित फ़ाइलों को माउंट करना और एक्सेस करना आसान हो सकता है। वहाँ davfs2 वहाँ बाहर है और कुछ ओएस, मैक ओएस एक्स की तरह, में।

+0

हाँ, यह निश्चित रूप से एक और विकल्प है। अगर मैं इसे घुमाने वाला हूं, तो मैं एनएफएस का भी उपयोग कर सकता हूं, लेकिन बढ़ रहा है जिसे मैं पहली जगह WebDAV का उपयोग करके टालने की कोशिश कर रहा था। माउंट समाधान के लिए –

+0

+1। यह ऐसी समस्याओं को हल करने का यूनिक्स तरीका है। @ किमिल माउंटिंग के खिलाफ आपके तर्क क्या थे ताकि आपने WebDAV लाइब्रेरी खोजने का निर्णय लिया हो? –

+1

-1 बढ़ते नेटवर्क फाइल सिस्टम जैसे एस 3, डीएवी, एसएसएफएफ जो इस तरह के उपयोग के साथ दिमाग में नहीं बनाए गए थे (एनएफएस/एसएमबी की तुलना में) अभ्यास में समस्याओं का स्रोत बना रहे हैं। क्षणिक नेटवर्क त्रुटियों को आमतौर पर एप्लिकेशन के लिए बहुत खराब तरीके से सूचित किया जाता है या लॉक अप का कारण बनता है। ड्राइवर डेवलपर द्वारा अप्रत्याशित पैटर को सर्वर के साथ व्यापक हैंडशेक की आवश्यकता होती है और इस प्रकार अस्वीकार्य विलंबता, दूसरी ओर कैश पर असंगतताएं होती हैं। – Juraj

0

बनाया WebDAV फाइल सिस्टम समर्थन मैं इन पुस्तकालयों से किसी के साथ कोई अनुभव नहीं है नहीं है, लेकिन अजगर पैकेज सूचकांक ("PyPi") lists quite a few webdav modules

1

स्पष्ट रूप से आप एक वेबडीवी क्लाइंट लाइब्रेरी की तलाश में हैं।

लेकर सुनिश्चित नहीं हैं gazillion हिट आया, ऐसा लगता है निम्नलिखित 2 प्रासंगिक लग रहा है:

9

मैं बस मेरी ज़रूरतों के लिए कुछ पाइथन वेबडीवी क्लाइंट का परीक्षण करने और एक वेबएडीवी सर्वर से फ़ाइलों को डाउनलोड करने के लिए एक समान आवश्यकता थी और समाप्त हो गया)। यहां मेरे अनुभव का सारांश दिया गया है:

1) मेरे लिए काम करने वाला एक व्यक्ति python-webdav-lib है।

अधिक दस्तावेज नहीं है, लेकिन कोड (विशेष रूप से उदाहरण) पर एक त्वरित रूप से यह पता लगाने के लिए पर्याप्त था कि यह मेरे लिए कैसे काम करे।

2) पीडीडीएवी 0.21 (मुझे मिली नवीनतम रिलीज) पायथन 2.6 के साथ काम नहीं करता है क्योंकि यह तारों को अपवादों के रूप में उपयोग करता है। मैंने इसे ठीक करने की कोशिश नहीं की, बाद में और असंगतताओं की उम्मीद की।

3) davclient 0.2.0। मैंने इसे देखा लेकिन किसी और का पता नहीं लगाया क्योंकि दस्तावेज़ में एपीआई के स्तर का उल्लेख नहीं किया गया था जिसे मैं ढूंढ रहा था (फ़ाइल अपलोड और डाउनलोड)।

4) Python_WebDAV_Library-0.3.0। प्रतीत होता है कि कोई अपलोड कार्यक्षमता नहीं है।

+1

विश्लेषण के लिए thx, शायद कुछ चीजें sice बदल गई हैं - 1) पायथन-वेबडाव-lib और पायथन_WebDAV_Library-0.3.0 समान – mykhal

+2

पाइथन-वेबडैव-लिब ऊपर उल्लिखित है - मेरे लिए बहुत अच्छा काम किया और एक बेहतर/अधिक उपयोगी उत्तर था स्वीकार किए गए एक से। –

43

यह दुखद है कि इस सवाल के लिए ("क्या पाइथन वेबडाव लाइब्रेरी का उपयोग करना है?"), जो कि एक से अधिक व्यक्तियों के लिए निश्चित हितों के लिए, असंबंधित उत्तर स्वीकार किया गया था ("पायथन वेबडाव लाइब्रेरी का उपयोग न करें")। खैर, Stackexchange पर आम समस्या।

उन लोगों के लिए जो वास्तविक उत्तरों की तलाश करेंगे, और मूल प्रश्न ("ओएस" मॉड्यूल के समान सरल एपीआई) में आवश्यकताओं को देखते हुए, मैं easywebdav का सुझाव दे सकता हूं, जिसमें बहुत आसान एपीआई और यहां तक ​​कि अच्छा और सरल कार्यान्वयन भी है, अपलोड/डाउनलोड और कुछ फाइल/डीआईआर प्रबंधन विधियों की पेशकश। सरल कार्यान्वयन के कारण, यह अब तक निर्देशिका सूची का समर्थन नहीं करता है, लेकिन इसके लिए बग filed था, और लेखक इसे जोड़ना चाहता है।

+2

निर्देशिका सूची लागू की गई है क्योंकि आप https://github.com/amnong/easywebdav/pull/4 देख सकते हैं। – Impiastro

+0

यह पुस्तकालय महान काम करता है। मैवेरिक्स पर बस परीक्षण किया गया: ls, डाउनलोड, अपलोड करें और यहां तक ​​कि एक "भेजें" निजी फ़ंक्शन भी है ताकि आप मनमाने ढंग से अनुरोध प्राप्त कर सकें। मेरे लिए और यह पाइथन काम करता है :) – chrisallick

+1

दुर्भाग्य से इसमें पाइथन 3 समर्थन नहीं है, और पुल अनुरोध संसाधित नहीं होते हैं। अभी भी एक अच्छा विकल्प तलाश रहे हैं ... – blootsvoets

2
import easywebdav 

webdav = easywebdav.connect(
    host='dav.dumptruck.goldenfrog.com', 
    username='_snip_', 
    port=443, 
    protocol="https", 
    password='_snip_') 

_file = "test.py" 

print webdav.cd("/dav/") 
# print webdav._get_url("") 
# print webdav.ls() 
# print webdav.exists("/dav/test.py") 
# print webdav.exists("ECS.zip") 
# print webdav.download(_file, "./"+_file) 
print webdav.upload("./test.py", "test.py") 
0

स्थापित करें:

$ sudo apt-get install libxml2-dev libxslt-dev python-dev 
$ sudo apt-get install libcurl4-openssl-dev python-pycurl 
$ sudo easy_install webdavclient 

उदाहरण:

import webdav.client as wc 

options = { 
    'webdav_hostname': "https://webdav.server.ru", 
    'webdav_login': "login", 
    'webdav_password': "password" 
} 

client = wc.Client(options) 

client.check("dir1/file1") 
client.info("dir1/file1") 

files = client.list() 
free_size = client.free() 

client.mkdir("dir1/dir2") 
client.clean("dir1/dir2") 

client.copy(remote_path_from="dir1/file1", remote_path_to="dir2/file1") 
client.move(remote_path_from="dir1/file1", remote_path_to="dir2/file1") 

client.download_sync(remote_path="dir1/file1", local_path="~/Downloads/file1") 
client.upload_sync(remote_path="dir1/file1", local_path="~/Documents/file1") 
client.download_async(remote_path="dir1/file1", local_path="~/Downloads/file1", callback=callback) 
client.upload_async(remote_path="dir1/file1", local_path="~/Documents/file1", callback=callback) 

link = client.publish("dir1/file1") 
client.unpublish("dir1/file1") 

लिंक:

  • स्रोत कोड here
  • पैकेट here