如果文件存在,则删除该文件。如果没有,请创建它

Posted

技术标签:

【中文标题】如果文件存在,则删除该文件。如果没有,请创建它【英文标题】:Delete a file if it exists. If it doesn't, create it 【发布时间】:2015-10-31 03:06:58 【问题描述】:

标题说明一切。

我的代码:

 try:
        os.remove("NumPyResults.txt")

 except IOError:

        with open("NumPyResults.txt", 'a') as results_file:
            outfile = csv.writer(results_file)
            outfile.writerow(.......)

之所以在 append 中是因为它在一个函数中并且被多次调用。所以我每次运行程序时都想要一个新文件,删除旧文件并写入新文件。

但是,这不会创建新文件。我还在运行的目录中创建了该文件,它也没有删除它。

我明白了

WindowsError: [Error 2] The system cannot find the file specified: 'NumPyResults.txt'

【问题讨论】:

***.com/questions/2967194/… append 不会根据定义删除文件 为什么不直接使用open(path, 'w')?它会删除旧文件并重写它。 这一切都在一个函数里面?不是每次打电话都会删除文件吗? 【参考方案1】:

我得到的丢失文件名的异常是“OSError”,而不是“IOError”。 而且如果遇到异常,只想通过,文件写入应该在try块之外。

try:
    os.remove("NumPyResults.txt")
except OSError:
    pass

with open("NumPyResults.txt", 'a') as results_file:
    results_file.write('hi\n')

【讨论】:

不管怎样,我在 python3.4 上得到 FileNotFoundError 在 python2.7 上得到 OSError

以上是关于如果文件存在,则删除该文件。如果没有,请创建它的主要内容,如果未能解决你的问题,请参考以下文章

检查文件夹,如果不存在则创建它

如果文件不存在,则创建一个文件

如果不存在,则创建一个 .txt 文件,如果它确实追加一个新行

Java以缓冲字符流向文件写入内容(如果文件存在则删除,否则先创建后写入)

如果已经下载则打开PDF,如果没有,请使用下载管理器下载PDF

java程序题:在D盘创建文件1.txt,如果存在则删除旧文件,不存在则直接创建新文(具体且完整的过程)