我正在开发一个Django项目,我想在我的服务器上替换一个文件。一种方法是在文件名已存在的情况下删除文件并将新文件保存在其位置。
我的问题是以/data.xlsx结尾的文件路径被视为目录。在python中,os.isfile(path)返回false,os.isdir(path)返回true,尽管路径是这样的:
path = os.path.normpath(os.path.join(settings.MEDIA_ROOT, name)).replace('\\', '/')
返回类似
的内容"G:/username/path/to/django/project/static/data/data.xlsx"
os.remove(path)返回OSError,因为path不是文件路径。我检查了这个文件(0777)的所有权限。
我不知道如何让python明白这是一个Excel文件而不是目录。有人能帮我吗?我没有任何调试想法。
提前致谢!
答案 0 :(得分:0)
路径名称不定义某些内容是文件还是目录。如果您愿意,可以命名文件"/tmp/my/directory"
和目录"/tmp/my/file.xls"
。同样,python不决定路径是对应于文件还是目录,它只检查。如果python说文件对应一个目录,那就意味着你的操作系统说它是一个目录。您的操作系统严重搞砸了,或者您实际上有一个名为path
的目录。
提示:很可能是后来的。尝试删除path
上的目录。