2009-12-28 16 views
5

मैं अपने विंडोज कंप्यूटर को एक पायथन स्क्रिप्ट चलाता हूं जब यह पता चलता है कि एक फ्लैश ड्राइव जिसमें एक विशेष नाम है (उदाहरण के लिए "माई ड्राइव") प्लग इन किया गया है।पायथन का उपयोग कर विंडोज़ में फ्लैश ड्राइव प्लग-इन का पता कैसे लगाया जाए?

मैं इसे कैसे प्राप्त कर सकता हूं?

क्या मुझे विंडोज़ में कुछ टूल का उपयोग करना चाहिए या फ्लैश ड्राइव की उपस्थिति का पता लगाने के लिए एक और पायथन स्क्रिप्ट लिखने का कोई तरीका है जैसे ही यह प्लग इन हो? खैर (मैं इसे पसंद करते हैं, तो स्क्रिप्ट कंप्यूटर पर था।)

(मैं एक प्रोग्रामिंग नौसिखिया हूँ ..)

उत्तर

3

, यदि आप एक Linux वितरण पर कर रहे हैं, तो this question पर इतना होता है उत्तर।

मैं आपकी समस्या के लिए एक दौर (सुरुचिपूर्ण) समाधान के बारे में सोच सकता हूं, लेकिन कम से कम यह काम करेगा।

हर बार जब आप एक यूएसबी पोर्ट में अपना फ्लैश ड्राइव डालते हैं, तो विंडोज ओएस इसे एक ड्राइव अक्षर असाइन करता है। इस चर्चा के प्रयोजनों के लिए, चलिए उस पत्र 'एफ' को कॉल करते हैं।

यह कोड यह देखने के लिए देखता है कि क्या हम f:\ में सीडी कर सकते हैं। यदि f:\ में सीडी करना संभव है, तो हम निष्कर्ष निकाल सकते हैं कि 'एफ' को ड्राइव अक्षर के रूप में आवंटित किया गया है, और इस धारणा के तहत कि आपका फ्लैश ड्राइव हमेशा 'एफ' को सौंपा गया है, हम निष्कर्ष निकाल सकते हैं कि आपका फ्लैश ड्राइव रहा है में खामियों को दूर।

import os 
def isPluggedIn(driveLetter): 
    if os.system("cd " +driveLetter +":") == 0: return True 
    else: return False 
+1

लेकिन ड्राइव हमेशा एक ही पत्र को सौंपा नहीं जाएगा। मैं इसके लिए कैसे खाता कर सकता हूं? –

+0

यह सिर्फ बात है। मैं तुरंत ऐसा करने का तरीका नहीं सोच सकता। लेकिन कम से कम, यह एक आंशिक समाधान है। मैंने केवल इसे पोस्ट किया क्योंकि उस समय कोई अन्य समाधान नहीं था। तो मुझे लगा कि आंशिक समाधान किसी भी – inspectorG4dget

4

के रूप में 'inpectorG4dget' का सुझाव दिया हालांकि आप एक ऐसी ही विधि का उपयोग कर सकते हैं लेकिन यह है कि एक बहुत अक्षम हो जाएगा।

इसके लिए आपको Win API का उपयोग करने की आवश्यकता है। यह पृष्ठ आप के लिए काम का हो सकता: Link

और विन एपीआई का उपयोग करने के अजगर में इस लिंक की जाँच: "सीडी" दृष्टिकोण पर Link

+0

पर किसी से भी बेहतर नहीं होगा, लेकिन यह कम से कम एक अतिरिक्त मॉड्यूल की स्थापना की आवश्यकता है – inspectorG4dget

3

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

# building on above and http://stackoverflow.com/questions/827371/is-there-a-way-to-list-all-the-available-drive-letters-in-python 
import string 
from ctypes import windll 
import time 
import os 

def get_drives(): 
    drives = [] 
    bitmask = windll.kernel32.GetLogicalDrives() 
    for letter in string.uppercase: 
     if bitmask & 1: 
      drives.append(letter) 
     bitmask >>= 1 
    return drives 


if __name__ == '__main__': 
    before = set(get_drives()) 
    pause = raw_input("Please insert the USB device, then press ENTER") 
    print ('Please wait...') 
    time.sleep(5) 
    after = set(get_drives()) 
    drives = after - before 
    delta = len(drives) 

    if (delta): 
     for drive in drives: 
      if os.system("cd " + drive + ":") == 0: 
       newly_mounted = drive 
       print "There were %d drives added: %s. Newly mounted drive letter is %s" % (delta, drives, newly_mounted) 
    else: 
     print "Sorry, I couldn't find any newly mounted drives." 
संबंधित मुद्दे

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