Mover arquivos com o mesmo nome, mas extensões diferentes para locais existentes contendo arquivos com mesmo nome

0

Atualmente, tenho um diretório pai com 10 pastas com 10 datas diferentes para nomes (por exemplo, 2016-11-21 etc.). Nestas pastas de data, há arquivos WAV com nomes de arquivos exclusivos.

Separadamente, tenho arquivos TXT correspondentes com o mesmo nome, mas eles não estão atualmente nas pastas com os arquivos WAV correspondentes. Como posso fazer um loop de forma que, se os nomes dos arquivos coincidirem, o arquivo TXT seja movido para o local da pasta existente dentro do diretório pai?

Atualmente, tenho essa estrutura:

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

Eu quero algo que torne a estrutura:

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

Isso é possível? Obrigado

    
por Terence 22.11.2016 / 02:56

1 resposta

0

Você pode usar glob e shutil para realizar sua tarefa.

Note que o WAV e o TXT diferenciam maiúsculas e minúsculas, portanto, é necessário alterá-lo ou adicionar algo para verificar os dois.

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)
    
por 22.11.2016 / 05:00