एक ही नाम से फ़ाइलों को स्थानांतरित करें, लेकिन एक ही नाम वाली फ़ाइलों वाले मौजूदा स्थान पर अलग-अलग एक्सटेंशन


0

मेरे पास वर्तमान में नामों के लिए 10 अलग-अलग तारीखों के साथ 10 फ़ोल्डरों वाली एक मूल निर्देशिका है (अर्थात 2016-11-21, आदि) इन तारीख के फ़ोल्डरों में, अद्वितीय फ़ाइल नामों के साथ WAV फाइलें हैं।

अलग-अलग, मेरे पास एक ही नाम के साथ संगत TXT फाइलें हैं, लेकिन वे वर्तमान में मिलान WAV फ़ाइलों के साथ फ़ोल्डर्स में नहीं हैं। मैं इसे ऐसे कैसे लूप कर सकता हूं कि अगर फाइलनेम मैच करता है, तो TXT फाइल पैरेंट डायरेक्टरी के भीतर मौजूदा फोल्डर लोकेशन में चली जाती है?

वर्तमान में मेरे पास यह संरचना है:

/Folder1/File1.TXT
/Folder1/2011-11-21/File1.WAV

मुझे कुछ ऐसा चाहिए, जो संरचना बन जाए:

/Folder1/2011-11-21/File1.TXT
/Folder1/2011-11-21/File1.WAV

क्या यह संभव है? धन्यवाद


सुपर उपयोगकर्ता में आपका स्वागत है! कृपया ध्यान दें कि superuser.com एक मुफ्त स्क्रिप्ट / कोड लेखन सेवा नहीं है। यदि आप हमें बताते हैं कि आपने अब तक क्या प्रयास किया है (जिन लिपियों / कोड का आप पहले से उपयोग कर रहे हैं) और जहां आप अटके हुए हैं, तो हम विशिष्ट समस्याओं में मदद करने का प्रयास कर सकते हैं। आपको यह भी पढ़ना चाहिए कि मैं एक अच्छा सवाल कैसे पूछूं?
DavidPostill

जवाबों:


0

आप अपने काम को पूरा करने के लिए ग्लोब और शील का उपयोग कर सकते हैं।

ध्यान दें कि WAV और TXT संवेदनशील हैं, इसलिए आपको तदनुसार बदलने की आवश्यकता है, या दोनों के लिए जांचने के लिए कुछ जोड़ना होगा।

import os
import glob
import shutil

# Create a list of WAV files.  If you put in txt directory, remove Folder1; otherwise, put full path.
wav_files = glob.glob('Folder1/**/*.WAV')

# Create a list of text files to move
txt_files = glob.glob('Folder1/*.TXT')

# Check OS for file separator since that is not provided
if os.name == 'nt':
    separator = '\\'
else: 
    separator = '/'

for txt in txt_files:
    # [-1] takes the last part of the path
    # .strip removes .TXT from the file name 
    txt_name = txt.split(separator)[-1].strip('.TXT')
    for  wav in wav_files:
        wav_name = wav.split(separator)[-1].strip('.WAV')
        wav_path = wav.strip(txt_name + '.WAV')
        # Check if the wav_name and txt_name are the same.  
        # There is no check for case.    
        if wav_name == txt_name:
            shutil.move(txt, wav_path)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.