OSError:目录不是空的,如何修复?

PyG*_*Guy 6 python directory rename exception file

我只是想编写一个小应用程序,它从名为'DATA.DAT'的文件中获取值,并使用该值重命名包含该文件的文件夹.

.py脚本在另一个文件夹中运行,允许用户定义路径.为了给您一个更好的想法,用户定义的路径必须像(在Mac上)'/ Users/User/Desktop/FOLDER'和'FOLDER'应该包含'DATA.DAT'.

这就是源代码的一小部分:

try:
    data = open('DATA.DAT').read()

    data_data = data[12:17]
    path_paths = path.rsplit('/')
    basepath = '/'.join(path_paths[:-1])
    chdir(basepath)

    if path_paths[-1] <> data_data:
        rename(path_paths[-1], data_data)
        raw_input('Folder name has been corrected! Thank you.')
        quit()
    else:
        print('Folder name was already correct! Thank you.')
        quit()
except IndexError:
    raw_input('ERROR!')
    quit()
Run Code Online (Sandbox Code Playgroud)

嗯,它有效; 但是当'FOLDER'包含多个文件时它会引发异常(实际上,'FOLDER'应该只包含'DATA.DAT'和其他文件夹.这不会产生问题.)...

Traceback (most recent call last):
  File "/Users/User/Desktop/example.py", line 72, in <module>
    rename(path_paths[-1], data_data)
OSError: [Errno 66] Directory not empty
Run Code Online (Sandbox Code Playgroud)

只是为了防止这种情况发生,有没有办法解决它?谢谢.

agf*_*agf 15

编辑:正确的工具是shutil.move:

shutil.move(path_paths[-1], data_data)
Run Code Online (Sandbox Code Playgroud)

假设path_paths[-1]是要重命名data_data的绝对目录,并且是要将其重命名为的绝对目录名称.

目标目录必须不存在才能生效.这两个位置不需要位于同一文件系统上.


旧答案:使用os.renames而不是os.rename.

它将递归创建任何所需的目录.