2010-09-27 2 views
2
#Moving up/down dir structure 
print os.listdir('.') 
print os.listdir('..') 
print os.listdir('../..') 

Любые другие способы ??? Я получил спасение, прежде чем идти глубже, а затем переназначить позже.Способы перемещения вверх и вниз по структуре пива в Python

+3

Вам нужно указать, что вы пытаетесь сделать, потому что это не движется вверх или вниз иерархии каталогов, это просто список содержимого различные справочники. 'os.chdir' - это то, как вы меняете каталог. –

+0

В основном я пытаюсь написать простую программу, которая повторно проверяет всю директорию в пути и удаляет пустые. – shawn

ответ

3

Это должно сделать трюк:

for root, dirs, files in os.walk(os.getcwd()): 
    for name in dirs: 
     try: 
      os.rmdir(os.path.join(root, name)) 
     except WindowsError: 
      print 'Skipping', os.path.join(root, name) 

Это будет ходить файловую систему, начинающуюся в каталоге скрипт запускается из. Он удаляет пустые каталоги на каждом уровне.

+0

и что, если вы хотите переместить все файлы в корневой каталог? – shawn

+0

Мне просто интересно. Я на самом деле получил его работу, но это было похоже на 80 строк кода ... lol – shawn

1

Конечно, есть - Автошоу являются как os.walk - которая возвращает кортежи подкаталоги и файлы tehrein в os.path.walk, который принимает функцию обратного вызова, которая будет вызвана для каждого файла в структуре каталогов.

Вы можете проверить интерактивную справку для обеих функций.

+0

кстати. за то, что вы получили этот ответ, я предположил, что вы хотите сделать это только из-за своего «спасителя, прежде чем идти глубже». Если вы хотите просто изменить dirs, os.chdir, очевидно, правильный ответ. – jsbueno

+0

Ну, я думаю, я собирался попытаться завладеть временными владельцами мест. Например, я буду меняться между родителем и ребенком в определенных методах. Я думаю, что просто попробую сохранить состояние. Спасибо – shawn

0

«и что, если вы хотите переместить все файлы до корневого каталога?»

Вы могли бы сделать что-то вроде:

for root, dirs, files in os.walk(os.getcwd()): 
    for f in files: 
     try: 
      shutil.move(os.path.join(root, f), os.getcwd()) 
     except: 
      print f, 'already exists in', os.getcwd() 
Смежные вопросы