以编程方式将文件移动到子目录(不使用unix mv命令)

时间:2013-08-23 09:44:32

标签: python rename shutil

是否可以通过os.rename或shutil.move将目录中的所有文件移动到同一目录的子目录中?

例如,如果我有以下结构:

  • DIR_1
    • File_1
    • File_2
    • subDir_1

我可以得到以下结构:

  • DIR_1
    • subDir_1
      • File_1
      • File_2 ?

最佳.-

编辑:最后我使用以下代码解决了我的问题:

    for fname in os.listdir(src):
      if os.path.isfile(os.path.join(src, fname)):
        os.rename(os.path.join(src, fname), os.path.join(dst, fname))

非常感谢你们两个人!

1 个答案:

答案 0 :(得分:3)

我希望这可以提供帮助:

import shutil,os,os.path


def walk(top):
    directory = None
    for root, dirs, files in os.walk(top, topdown=False):
        for name in dirs:
            directory = os.path.join(root, name)
        for name in files:
            f1 = os.path.join(root, name)
            if not f1.endswith('.py') and directory:
                shutil.move(f1,directory)


walk(os.path.realpath(os.curdir))

我尝试使用这个fs树,它可以工作:

-d/
  |-s/
  |-new file.txt
  |-new file1.txt
  |-move.py