Di chuyển các tệp có cùng tên nhưng phần mở rộng khác nhau đến vị trí hiện có chứa các tệp có cùng tên


0

Tôi hiện có một thư mục mẹ với 10 thư mục với 10 ngày khác nhau cho các tên (ví dụ: 2016-11-21, v.v.) Trong các thư mục ngày này, là các tệp WAV có tên tệp duy nhất.

Một cách riêng biệt, tôi có các tệp TXT tương ứng có cùng tên, nhưng chúng hiện không có trong các thư mục có tệp WAV phù hợp. Làm thế nào tôi có thể lặp nó sao cho nếu tên tệp trùng khớp, tệp TXT được di chuyển đến vị trí thư mục hiện có trong thư mục mẹ?

Hiện tại tôi có cấu trúc này:

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

Tôi muốn một cái gì đó mà cấu trúc sẽ trở thành:

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

Điều này có thể không? Cảm ơn


Chào mừng bạn đến với Siêu người dùng! Xin lưu ý rằng siêu người dùng.com không phải là một dịch vụ viết mã / mã miễn phí. Nếu bạn cho chúng tôi biết những gì bạn đã thử cho đến nay (bao gồm các tập lệnh / mã bạn đang sử dụng) và nơi bạn bị mắc kẹt thì chúng tôi có thể cố gắng giúp đỡ với các vấn đề cụ thể. Bạn cũng nên đọc Làm thế nào để tôi hỏi một câu hỏi hay? .
DavidPostill

Câu trả lời:


0

Bạn có thể sử dụng toàn cầu và tắt máy để hoàn thành nhiệm vụ của mình.

Lưu ý rằng WAV và TXT có phân biệt chữ hoa chữ thường, vì vậy bạn sẽ cần thay đổi tương ứng hoặc thêm vào một cái gì đó để kiểm tra cả hai.

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)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.