python - windows 不允许我替换文件

标签 python delete-row overwrite file-rename

我正在使用 python 迭代 csv 文件,然后删除多行。为此,我创建一个新文件,然后尝试删除旧文件,然后将新文件重命名为旧文件名。我不断收到错误,但我不清楚为什么。错误如下:

 Traceback (most recent call last):
      File "sendemails.py", line 85, in <module>
        os.remove('C:\Python27\emails.csv')
    WindowsError: [Error 32] The process cannot access the file because it is being used by another process: 'C:\\Python27\\emails.csv'

相关代码如下:

FIRST_ROW_NUM = 1
ROWS_TO_DELETE = {1,3}

with open('C:\\Python27\\emails.csv', 'rt') as infile, open('C:\\Python27\\emailed.csv', 'wt') as outfile:
    outfile.writelines(row for row_num, row in enumerate(infile, FIRST_ROW_NUM)
                        if row_num not in ROWS_TO_DELETE)

os.remove('C:\\Python27\\emails.csv')
os.rename('C:\\Python27\\emailed.csv','C:\\Python27\\emails.csv')

据我所知,csv 文件在任何地方都没有打开,我打印了 infile 和 outfile(以查看是否关闭),并且在删除或重命名之前两者都已关闭。有什么帮助吗?我完全迷路了。

最佳答案

有时在某些 Microsoft Windows 系统中,如果您使用其他程序(例如记事本)打开该文件,则该文件无法删除,因为该程序正在使用该文件。

关于python - windows 不允许我替换文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31977236/

相关文章:

javascript - 如何在每个列表项之前添加一个复选框,并在列表项之后添加一个删除按钮?

powershell - 如何让7zip覆盖?

python - 时间序列重采样

python - 如何通过键连接两个RDD?

python - 使用 Python CSV 模块写入 csv,每次保持列的顺序相同

ios - 使用 UITableViewCellDeleteConfirmationControl 知道当前单元格的 subview 是什么

php - 删除查询正在执行,但记录被删除并且表为空

linux - lame - 覆盖现有文件

java - 字符串可以重写吗?

python - Swagger UI 显示 API 不支持的 HTTP HEAD 方法