如果文件存在,则删除该文件。如果不存在,则创建它。

4
标题已经说得很清楚了。
我的代码:
 try:
        os.remove("NumPyResults.txt")

 except IOError:

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

之所以使用追加模式,是因为该代码段处于函数中并被多次调用。因此,每次运行程序时,我都希望创建一个新文件,通过删除旧文件并写入新文件实现。

然而,这样并没有创建新文件。我也将文件创建在了当前运行目录,并且它也没有被删除。

出现了如下问题:

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

3
如果文件不存在,Python 中的“打开”操作不会创建该文件。 - jarmod
2
“append” 的定义并不会删除文件。 - Jeremy Fisher
3
为什么不直接使用open(path, 'w')?它会删除旧文件并覆盖写入新内容。 - Markus Meskanen
1
这一切都在一个函数里面?每次调用函数文件都会被删除吗? - Renae Lider
1个回答

12

当文件名不存在时,我收到的异常是'OSError'而不是'IOError'。如果你遇到这个异常,只需简单地跳过它,并将文件写入放在try块之外。

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

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

2
就我所知,在Python3.4上会出现FileNotFoundError错误,而在Python2.7上会出现OSError错误。 - NightShadeQueen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接