Переименование имен файлов, содержащих пробелы - PullRequest
6 голосов
/ 19 сентября 2011

Я пишу простой скрипт на Python, чтобы переименовать все файлы в каталоге, чтобы заменить все пробелы в имени файла дефисами. У меня есть следующее, что сбой на os.rename

import os

path =  os.getcwd()
filenames = os.listdir(path)

for filename in filenames:
    os.rename(os.path.join(path + filename), os.path.join(path + filename.replace(" ", "-")))

выдает ошибку в консоли:

Traceback (most recent call last):
  File "<stdin>", line 2, in <module>
OSError: [Errno 2] No such file or directory

Есть идеи, почему это происходит?

Ответы [ 2 ]

24 голосов
/ 19 сентября 2011

Я думаю, это просто потому, что у вас неправильный синтаксис при вызове os.path.join, элементы, к которым вы присоединяетесь, должны быть представлены в виде двух отдельных аргументов, разделенных запятой.Это прекрасно работает для меня:

Python 2.7.2 (default, Jun 12 2011, 15:08:59) [MSC v.1500 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> path  = os.getcwd()
>>> filenames = os.listdir(path)
>>> for filename in filenames:
...     os.rename(os.path.join(path, filename), os.path.join(path, filename.replace(' ', '-')))
...
>>>
9 голосов
/ 19 сентября 2011

Если вы уже находитесь в каталоге, содержащем файлы, которые вы хотите переименовать, вам не нужно указывать абсолютный путь:

for filename in filenames:
    os.rename(filename, filename.replace(" ", "-"))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...