2011-11-22 10 views
7

मेरे पास 30,000 फ़ाइलों के साथ मेरे ड्रॉपबॉक्स में एक फ़ोल्डर है, जिसे मैं वेब इंटरफ़ेस का उपयोग करके हटा नहीं सकता। ऐसा लगता है कि मुझे ड्रॉपबॉक्स को बताने के लिए सभी 30,000 फाइलें डाउनलोड करनी हैं, मैं वास्तव में उन्हें नहीं चाहता हूं।30,000 फ़ाइलों के साथ फ़ोल्डर को हटाने के लिए ड्रॉपबॉक्स वेब इंटरफ़ेस का उपयोग

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

क्या कोई इस बारे में काम करने के लिए एक चालाक तरीका सोच सकता है? बस फ़ोल्डर को देखने से आमतौर पर वेब इंटरफ़ेस क्रैश हो जाता है।

+0

30,000 फ़ाइलों का कुल आकार क्या है? – Flukey

+0

@ फ्लाकी: शायद 500 एमबी से 1 जीबी तक। वे बहुत छोटे हैं। – Zach

+0

मैंने इसे चूसने और फ़ाइलों को सभी मशीनों पर डाउनलोड करने के लिए 12 घंटे का इंतजार करके हल किया। तब मैंने उन्हें हटा दिया, और चीजें अब peachy हैं। – Zach

उत्तर

8

फ़ोल्डर में 30,000+ फ़ाइलों को हटाने का एकमात्र तरीका चुनिंदा सिंक का उपयोग करके उन्हें डाउनलोड करना है। वेब इंटरफेस "बहुत सारी फाइलें डेस्कटॉप एप्लिकेशन का उपयोग करें" त्रुटि देगा। यह स्वचालित है, इसलिए केवल एक चीज है जो समय लेती है (और पर्याप्त हार्ड ड्राइव स्पेस)। यदि आपके पास पर्याप्त स्थान नहीं है, तो बाहरी ड्राइव में प्लग करें और ड्रॉपबॉक्स निर्देशिका को दोबारा दर्ज करें, इसे डाउनलोड करने दें, फिर हटाएं।

यह एक बेवकूफ मुद्दा है, मुझे पता है। काश आप वेब इंटरफ़ेस के माध्यम से अधिक प्रबंधित कर सकते हैं क्योंकि यह आपकी फ़ाइलों के लिए केंद्रीय स्थान है।

+1

2015 में विश्वास नहीं कर सका !! अभी भी महान उत्पादों में कम स्पष्ट लेकिन बुनियादी सुविधाओं की कमी है। – nehemiah

+0

@itsneo यह 2015 और 'फीचर्स' को अभी भी हमारे द्वारा लिखे गए प्रत्येक एप्लिकेशन में एक-एक करके प्रोग्राम करने की आवश्यकता है। प्रोग्रामिंग के विकास में कहीं कुछ प्रमुख कदम गायब है। केवल मेरे दो सेंट्स। – masterxilo

+0

हालांकि, जैसा कि जेसन ने बताया "वेब इंटरफेस सभी फाइलों के लिए केंद्रीय स्थान है" जिसके लिए ड्रॉपबॉक्स को अधिक पैसा और प्रतिभा रखना चाहिए।लेकिन मुझे पता है कि डीबी ने राय कब शुरू की थी, लेकिन इस लोकप्रिय उत्पाद के समय और विकास पर जोर दिया। – nehemiah

1

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

वेब फ़ाइलों से अभी भी कई फाइलें संभव नहीं हैं, लेकिन यदि आपको Dropbox API में डाइविंग नहीं लगता है तो यह कम से कम स्वचालित हो सकता है और आपको अपना स्वयं का संग्रहण उपयोग नहीं करना पड़ेगा (मैंने यह किया Python SDK के साथ नीचे, लेकिन अन्य भाषा विकल्प भी हैं)। फ़ाइल सीमा अभी भी लागू होती है, लेकिन प्रत्येक निर्देशिका में फ़ाइलों की संख्या को अंक में चलाने के बिना उन्हें हटाने का उचित तरीका निर्धारित करने के लिए गिना जा सकता है। इस तरह:

निम्न स्क्रिप्ट आपकी अद्वितीय ड्रॉपबॉक्स एपीआई कुंजी और ड्रॉपबॉक्स निर्देशिकाओं (deleteDirList) की सूची इनपुट के रूप में लेती है। यह deleteDirList के प्रत्येक तत्व की प्रत्येक उपनिर्देशिका के माध्यम से लूप करता है यह निर्धारित करने के लिए कि सीमा को मारने के बिना निर्देशिका को हटाने में सक्षम होने के लिए कुछ पर्याप्त फ़ाइलें हैं (मैंने रूढ़िवादी (?) 10,000 फ़ाइलों को सीमा निर्धारित की है); यदि बहुत सारी फाइलें हैं, तो यह गिनती सीमा से नीचे होने तक फ़ाइलों को व्यक्तिगत रूप से हटा देती है। आप अजगर पैकेज dropbox (मैं एनाकोंडा उपयोग करते हैं, तो conda install dropbox)

भालू मन में यह एक जानवर बल दृष्टिकोण है स्थापित करने के लिए की आवश्यकता होगी; प्रत्येक उपनिर्देशिका को एक-एक करके हटा दिया जाता है जो लंबे समय तक ले सकता है। प्रत्येक उपनिर्देशिका में फ़ाइलों को गिनने के लिए एक बेहतर तरीका होगा, फिर उच्चतम-स्तरीय निर्देशिका निर्धारित करें जिसे सीमा को मारने के बिना हटाया जा सकता है, लेकिन दुर्भाग्यवश मेरे पास इस समय लागू करने का समय नहीं है।

import dropbox 




##### USER INPUT ##### 

appToken = r'DROPBOX APIv2 TOKEN' 
deleteDirList = ['/directoryToDelete1/','/directoryToDelete2/']  # list of Dropbox paths in UNIX format (where Dropbox root is specified as '/') within which all contents will be deleted. The script will go through these one at a time. These need to be separate directories; subdirectories will deleted in the loop and will throw an exception if listed here. 

###################### 




dbx = dropbox.Dropbox(appToken) 
modifyLimit = 10000 

# Loop through each path in deleteDirList 
for deleteStartDir in deleteDirList: 
    deleteStartDir = deleteStartDir.lower() 

    # Initialize pathList. This is the variable that records all directories down each path tree so that each directory is traversed, files counted, then deleted 
    pathList = [deleteStartDir] 

    # Deletion loop 
    try: 
     while 1: 

      # Determine if there is a subdirectory in the current directory. If not, set nextDir=False 
      nextDir = next((x.path_lower for x in dbx.files_list_folder(pathList[-1]).entries if isinstance(x,dropbox.files.FolderMetadata)),False) 

      if not not nextDir:  # if nextDir has a value, append the subdirectory to pathList 
       pathList.append(nextDir) 
      else:  # otherwise, delete the current directory 
       if len(pathList)<=1:  # if this is the root deletion directory (specified in deleteDirList), delete all files and keep folder 
        fileList = [x.path_lower for x in dbx.files_list_folder(pathList[-1]).entries] 
        print('Cannot delete start directory; removing final',len(fileList),'file(s)') 
        for filepath in fileList: 
         dbx.files_delete(filepath) 

        raise EOFError() # deletion script is complete 

       # Count the number of files. If fileCnt>=modifyLimit, remove files until fileCnt<modifyLimit, then delete the remainder of the directory 
       fileCnt = len(dbx.files_list_folder(pathList[-1]).entries) 
       if fileCnt<modifyLimit: 
        print('Deleting "{path}" and'.format(path=pathList[-1]),fileCnt,'file(s) within\n') 
       else: 
        print('Too many files to delete directory. Deleting',fileCnt-(modifyLimit+1),'file(s) to reduce count, then removing',pathList[-1],'\n') 
        fileList = [x.path_lower for x in dbx.files_list_folder(pathList[-1]).entries] 
        for filepath in fileList[-modifyLimit:]: 
         dbx.files_delete(filepath) 

       dbx.files_delete(pathList[-1]) 
       del pathList[-1] 

    except EOFError: 
     print('Deleted all relevant files and directories from "{}"'.format(deleteStartDir)) 
संबंधित मुद्दे

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