当前位置: 首页 > 面试题库 >

删除文件(如果存在);蟒蛇

锺玺
2023-03-14
问题内容

我要创建一个文件;如果它已经存在,我想删除它并重新创建。我尝试这样做,但是会引发Win32错误。我究竟做错了什么?

try:
    with open(os.path.expanduser('~') + '\Desktop\input.txt'):
        os.remove(os.path.expanduser('~') + '\Desktop\input.txt')
        f1 = open(os.path.expanduser('~') + '\Desktop\input.txt', 'a')
except IOError:
    f1 = open(os.path.expanduser('~') + '\Desktop\input.txt', 'a')

问题答案:

您正在尝试删除打开的文件以及os.remove()状态文档…

在Windows上,尝试删除正在使用的文件会引发异常

您可以将代码更改为…

filename = os.path.expanduser('~') + '\Desktop\input.txt'
try:
    os.remove(filename)
except OSError:
    pass
f1 = open(filename, 'a')

…或者您可以将所有内容替换为…

f1 = open(os.path.expanduser('~') + '\Desktop\input.txt', 'w')

…这将在打开前将文件截断为零长度。



 类似资料:
  • 我想创建一个文件;如果它已经存在,我想删除它并重新创建它。我尝试这样做,但它抛出一个Win32错误。我做错了什么?

  • 问题内容: 我们需要先致电,然后才能删除文件,例如 当前,在我们所有的项目中,我们都在一些util类中创建一个静态方法来包装此代码。是否有其他方法可以实现相同目的,因此我们不需要在其他每个项目中复制utils文件。 问题答案: 从Java 7开始,可以使用deleteIfExists,它根据是否删除文件返回一个布尔值(或引发Exception)。对于其他文件系统操作,此方法可能不是原子的。此外,如

  • 问题内容: 朋友们, 我正在创建一个临时表。该脚本可能会运行几次,因此我需要检查临时表是否存在,然后将其删除。我已经在下面编写了代码,但是两次运行脚本时出现错误,表明该表已经存在: 数据库中已经有一个名为“#lu_sensor_name_19”的对象 。 当Tablle不为null时,似乎不会返回true。我究竟做错了什么? 问题答案: Temp #Tables是在tempdb中创建的。试试这个:

  • 问题内容: 我有一个脚本,它使用DROP TABLE IF EXISTS删除表的负载,这可以工作。 此脚本中还有一个删除操作,用于从我不管理的另一个表中删除一行。该表可能存在或不存在。是否有任何在尝试删除行之前检查该表是否存在? 这需要适用于MYSQL和SQLServer 谢谢亚历克斯 问题答案: 要签入SQL SERVER, 要检查mysql: 您只需数:

  • 我正在编写一个程序,将一些JSON编码的数据存储在一个文件中,但有时生成的文件是空白的(因为没有找到任何新数据)。当程序查找并存储数据时,我执行以下操作: 当然,如果文件是空白的,这将引发一个异常,我可以抓住,但不让我删除文件。我曾经尝试过: 我得到了这个错误: 发生异常时,如何删除文件?

  • 问题内容: 我正在使用postgreSQL9.1,并且想使用此提示从表中删除重复项: 另一种可能的方式是 我在ORDER BY (SELECT 0)上面使用,因为在打平的情况下保留哪一行是任意的。 为了保留最新的RowID顺序,例如,您可以使用ORDER BY RowID DESC 执行计划 执行计划通常比接受的答案更简单,更有效,因为它不需要自我连接。 执行计划 但是,情况并非总是如此。一种GR

  • 我有一个非常简单的功能: 该文件在执行后显示不可读,并从文件目录中消失。但是,当从浏览器访问时,它仍然可用,尽管没有缓存(在不同的浏览器上打开文件进行测试)。我是不是错过了什么?文件是否被服务器缓存?这是我能想到的唯一解释。

  • 问题内容: 我正在从表单文本字段,并从复选框中的字段 我将它们像这样组合: (此函数在列表中的字符串内去除空格。) 但在这种情况下是空的(没有新的标签进入),但也有一些,包含一个空字符串。 例如,来自: 我如何摆脱空字符串? 如果列表中有一个空字符串: 但是,如果没有空字符串: 但这给出了: 为什么会发生这种情况,我该如何解决? 问题答案: 1)几乎是英式风格: 使用操作员测试是否存在,然后应用该