2011-12-20 12 views
11

मैं एक पायथन स्क्रिप्ट लिखना चाहता हूं जो कि विंडोज एक्सप्लोरर में चुनी गई किसी भी फाइल को अपलोड करेगा। विचार विंडोज एक्सप्लोरर में किसी भी फाइल का चयन करना है, फ़ाइल के संदर्भ मेनू को प्रदर्शित करने के लिए राइट-क्लिक करें और वहां से एक कमांड चुनें ... "वेब सर्वर पर अपलोड करें" जैसे कुछ।चयनित फ़ाइल पर पाइथन स्क्रिप्ट चलाएं

कमांड का चयन करने के बाद, पायथन एक स्क्रिप्ट चलाता है जो फ़ाइल-पथ और फ़ाइल का फ़ाइल नाम अपलोड करने के लिए प्राप्त करता है। पाइथन लिपि लिखना जो वेब पर फ़ाइल अपलोड करेगा, वह सीधा लगता है। अस्पष्ट बात यह है कि पाइथन स्क्रिप्ट के लिए विंडोज संदर्भ मेनू में एक इकाई कैसे बनाएं। और फ़ाइल पथ और फ़ाइल नाम को पाइथन लिपि में पकड़ने के लिए कैसे पास करें .... कृपया सलाह दें!

उत्तर

21

विंडोज 7 मानते हुए, यदि आप एक फ़ोल्डर खोलते हैं और पता बार में "खोल: sendto" टाइप करते हैं तो एंटर दबाएं आपको संदर्भ मेनू में ले जाया जाएगा। आप इसमें निम्न के साथ एक .cmd फ़ाइल जोड़ सकते हैं।

@echo off 
cls 
python C:\Your\File\uploadscript.py %1 

यह पैरामीटर के रूप में फ़ाइल (% 1) में गुजरने वाली आपकी पायथन स्क्रिप्ट निष्पादित करना चाहिए। अजगर स्क्रिप्ट के भीतर आप उपयोग कर सकते हैं:

import sys 
sys.argv #sys.argv[1] is the file to upload 

यह बहुत sys.argv[1] में पारित हो जाता है सभी मापदंडों आप फ़ाइल है कि में पारित किया गया था मिलना चाहिए मैं इस परीक्षण किया है और यह काम करता है।। .py के दाईं ओर जाने के बजाय आपको .cmd फ़ाइल की आवश्यकता है क्योंकि .py फ़ाइल भेजें टू मेनू में दिखाई नहीं देगी।

में पारित फ़ाइल हो रही पर अधिक जानकारी यहां है:
Accepting File Argument in Python (from Send To context menu)

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

@echo off 
cls 
:upload_loop 
IF "%1"=="" GOTO completed 
    python C:\Your\File\uploadscript.py %1 
    SHIFT 
    GOTO upload_loop 
:completed 
+1

आप एक से अधिक फाइलें कैसे पास करेंगे? मैं केवल एक को पारित कर सकता हूं। –

+0

ऊपर एक विधि जोड़ना काम करेगा। यदि आप इसे एक ही कॉल में पायथन में करना चाहते हैं तो आपको चर का उपयोग करना होगा, यह उपयोग में हो सकता है: http://en.wikibooks.org/wiki/Windows_Batch_Scripting – Genzume

+0

@TristanForward शायद बस '% *' '% 1' के बजाय। – binki

1

यह वेबपृष्ठ Adding Windows context-menu actions एक अच्छा अजगर स्क्रिप्ट है कि एक संदर्भ मेनू रजिस्टर अपने अजगर स्क्रिप्ट के फ़ाइल पथ पारित करने के लिए होगा। मैंने कोशिश नहीं की है लेकिन आपको इस नमूना को संशोधित करना आसान लगता है कि आपको क्या करना है। इसके अलावा, इस तरह यह मुझे लगता है कि समाधान के लिए एक क्लिक कम है।

3

%1 के बजाय %* का उपयोग करें।

%1 पहला तर्क में पारित करेंगे, %* पारित करेंगे सब (%n वें में पारित करेंगे ...)

@echo off 
cls 
python C:\Your\File\uploadscript.py %* 

ध्यान दें कि कमांड लाइन XP और पूर्व, 8191 के लिए character limits 2047 में बनाया गया है विंडोज 7 और बाद में

2

ऐसे राइट क्लिक संदर्भ मेनू में अजगर स्क्रिप्ट के रूप में चीजों को जोड़ने के लिए के लिए, यह भी संभव

\HKEY_CLASSES_ROOT\Directory\Background\shell 
में रजिस्टर कुंजियों (regedit) जोड़ने के लिए है

वहां, एक कंटेनर जोड़ें, इसे उस स्ट्रिंग का नाम दें जिसे आप संदर्भ मेनू में दिखाना चाहते हैं। इसे में, प्रकार REG_SZ की एक प्रमुख है, जो उदाहरण

C:\Python27\python.exe "C:\path\to\your\script\yourscript.py" 

मैं sys में एकाधिक फ़ाइल चयन प्राप्त करने के लिए aforementionned समाधान के साथ कि काम करने के लिए पता नहीं कैसे के लिए अजगर स्क्रिप्ट लांचर शामिल जोड़ें।argv, लेकिन मैंने सोचा कि यह मुझे यहाँ उल्लेख करने लायक होगा।

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