为啥我会收到错误消息:“FileExistsError: [WinError 183] 当文件已存在时无法创建文件”?
Posted
技术标签:
【中文标题】为啥我会收到错误消息:“FileExistsError: [WinError 183] 当文件已存在时无法创建文件”?【英文标题】:Why am I getting the error: "FileExistsError: [WinError 183] Cannot create a file when that file already exists"?为什么我会收到错误消息:“FileExistsError: [WinError 183] 当文件已存在时无法创建文件”? 【发布时间】:2019-06-26 17:03:35 【问题描述】:如果我的脚本创建了一个文件夹,为什么会出现错误?我在 Windows 7 上使用 Python。 错误:
FileExistsError: [WinError 183] 当文件已存在时无法创建文件:[相关文件或文件夹的路径]
问题是文件和文件夹不存在。
【问题讨论】:
显然已经存在具有给定名称的文件或目录。对此还有什么可以说的? 如果您一次又一次地运行脚本,它会一次又一次地创建文件夹,并且不允许保留两个同名文件夹。所以那是你的错误。如果要再次创建,则需要为不同的运行实例保留不同的文件夹名称。 @ErykSun 问题是文件夹和文件不存在。但它已经不有趣了)我解决了。谢谢) 【参考方案1】:正如 cmets 所指出的,该文件夹已经存在。您似乎认为尝试创建一个已经存在的文件夹应该什么都不做。但这不是 Windows 的看法。
为避免出现错误消息,请先检查文件夹是否存在。在创建文件夹的代码之前,执行
if not os.path.exists("name of folder"):
【讨论】:
@SantaClaus 如果答案对您有用,请接受。 但是如果我只想覆盖它呢? 您不能用文件覆盖文件夹。而且我不确定用另一个文件夹覆盖一个文件夹可能意味着什么。 . 创建一个内容不同但名称相同的文件夹 创建内容不同但名称相同的文件夹的两种方法: (1) 使用shutil.rmtree()
删除整个文件夹及其内容,然后创建所需的新文件夹。 (2) 删除文件夹的原始内容,将文件放入(现在为空的)原始文件夹中。【参考方案2】:
我刚刚遇到了同样的问题。该线程帮助我解决了问题,但以下澄清可能对某人有所帮助:
对我来说,误解来自shutil.copytree(source, destination, symlinks, ignore)
。
我读到destination
是我复制的树将去的地方。实际上,它会创建该位置,然后将树复制到那里。所以如果你的目标目录已经存在,就像我的一样,你会得到错误。
希望对某人有所帮助。
【讨论】:
以上是关于为啥我会收到错误消息:“FileExistsError: [WinError 183] 当文件已存在时无法创建文件”?的主要内容,如果未能解决你的问题,请参考以下文章
为啥我会收到此错误? “气体估算错误,出现以下消息(见下文)。交易 > 执行可能会失败”
如何在 IIS 中正确托管连接到 SQLServer 的 WCF 数据服务?为啥我会收到错误消息?
为啥我会收到错误消息:Android Gradle 插件仅支持 Kotlin Gradle 插件版本 1.3.10 及更高版本