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