каталог python os.rename не пустой - PullRequest
0 голосов
/ 08 сентября 2018

я пытаюсь сделать mv test-dir/* ./ но на питоне. Я написал следующий код, но выдает OSError: [Errno 66] Directory not empty:

import os    
os.rename(
    os.getcwd() + '/test-dir',
    os.path.abspath(os.path.expanduser('.')))

Ответы [ 2 ]

0 голосов
/ 08 сентября 2018

Вы можете использовать shutil.move () для итеративного перемещения файлов из одного каталога в другой.
Например,

import os
import shutil

from_dir = os.path.join(os.getcwd(),"test-dir")
to_dir = os.path.abspath(os.path.expanduser('.'))

for file in os.listdir(from_dir):
    shutil.move(os.path.join(from_dir, file), to_dir)
0 голосов
/ 08 сентября 2018

Вы говорите операционной системе перемещать test-dir, а не ее содержимое. Обычно он заменяет цель (. в данном случае), но эта цель, очевидно, не пуста, поэтому неявное rmdir завершается неудачей. Даже если оно не было пустым, скорее всего, невозможно удалить или заменить имя ..

Оболочка * представляет собой глобус , который распространяется на каждую вещь в пределах test-dir, которую вы можете перемещать по отдельности; однако вы хотите перенести их имя в целевой каталог, то есть с test-dir/foobar на ./foobar. os.path.basename может помочь вам извлечь эту часть.

...