2015-11-09 4 views
3

Я пытаюсь найти все файлы .mp3 и .mp4 в моем/Users/каталоге в Windows 7. Вот мой код ниже. Идеи о том, что делать?Непоследовательное использование вкладок

import os 
newpath = r'C:\Users\Media' 
    if not os.path.exists(newpath): 
     os.makedirs(newpath) 
for root, dirs, files in os.walk("/Users"): 
    for file in files: 
     if file.endswith(".mp3"): 
      print(os.path.join(root, file)) 
      os.rename(os.path.join(root, file), newpath) 
for root, dirs, files in os.walk("/Users"): 
    for file in files: 
     if file.endswith(".mp4"): 
      print(os.path.join(root, file)) 
      os.rename(os.path.join(root, file), newpath) 
+0

проверить пробелы, и вы можете объединить два для петель в один (добавить elif). –

+3

Совет: 'if file.endswith (". Mp3 ") или file.endswith (". Mp4 ")'. –

+0

Еще один совет: если у вас есть Python> = 3.5, вы можете использовать что-то вроде 'glob.iglob (r'C: \ Users \ ** \ *. Mp3 ', recursive = True)' ([docs] (https://docs.python.org/3/library/glob.html)). –

ответ

1

Ваш код в значительной степени правильно, но только то, что, в коде, приведенном выше, есть вкладка перед первым if заявление, но это не является обязательным в любом смысле. Вот почему вы получаете такую ​​ошибку. Удалите эту вкладку или отступ, чтобы решить проблему. Скорректированный код будет выглядеть следующим образом:

import os 
newpath = r'C:\Users\Media' 
if not os.path.exists(newpath): 
     os.makedirs(newpath) 
for root, dirs, files in os.walk("/Users"): 
    for file in files: 
     if file.endswith(".mp3"): 
      print(os.path.join(root, file)) 
      os.rename(os.path.join(root, file), newpath) 
for root, dirs, files in os.walk("/Users"): 
    for file in files: 
     if file.endswith(".mp4"): 
      print(os.path.join(root, file)) 
      os.rename(os.path.join(root, file), newpath) 
+0

Большое спасибо, я просто пропустил это :) – MathMXC

+0

на самом деле @MathMXC должен * принять * ответ. –

Смежные вопросы