python - OSError : Directory not empty raised, 如何修复?

标签 python file exception directory rename

我只是想写一个小应用程序,它从名为“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()

好吧,它有效;但是当“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

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

最佳答案

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

shutil.move(path_paths[-1], data_data)

假设 path_paths[-1] 是您要重命名的绝对目录,data_data 是您要重命名的绝对目录名称。

目标目录必须不存在才能正常工作。这两个位置不需要在同一个文件系统上。


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

它将递归地创建任何需要的目录。

关于python - OSError : Directory not empty raised, 如何修复?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7487307/

相关文章:

python - PEM 格式的私钥有什么特别之处?

python - 试图理解 Python 中的抽象工厂模式

java - 组织.eclipse.swt.SWTException : Invalid thread access

python - Qt 在小部件属性动画期间调整布局大小

python - mypy错误,Union/Optional重载, “Overloaded function signatures 1 and 2 overlap with incompatible return types”

c++ - 性能读取二进制文件

python - 通过套接字发送二进制文件时出现问题,python

java - 从 .jar 文件夹中读取文件

android - 如何在出现任何异常时暂停 Eclipse?

python - 在 Python 3 中将异常转换为字符串