python - 为什么当我在运行程序后尝试打开 CSV 文件时,Python CSV 模块会将 CSV 文件设置为只读?

标签 python csv

我正在使用一个程序(如下)来查看两个 CSV 文件之间某些列的相似性,然后在数据符合某些规范(两列相同但第三列不同)时创建第三个,以便我可以更新电子邮件列表。

但是,当我在运行程序后尝试打开 results.csv 文件时,Windows Excel 只会以只读模式打开程序。

有什么想法吗?

这是我的代码:

import csv

sample_data = open("sample.csv", "r")
lib_data = open("library.csv", "r")
csv1 = csv.reader(sample_data)
csv2 = csv.reader(lib_data)

results = open("results.csv", "w")
res_csv = csv.writer(results)

limit = 1071
limit2 = 1001

x = 0
y = 0

while (y != limit):
    row1 = csv1.__next__()
    while (x != limit2):
        row2 = csv2.__next__()
        if (row1[0] == row2[3] and row1[1] == row2[2] and row1[2] != row2[5]):
            print ("SAMPLE:")
            print (row1[0], ", ", row1[1], ", ", row1[2])
            print ("LIBRARY:")
            print (row2[3], ", ", row2[2], ", ", row2[5])
            print("\n")
            res_csv.writerow(row1)
        x = x+1
    y = y+1
    x = 0
    lib_data.seek(0)

最佳答案

使用 with 确保文件将正确关闭:

with open("sample.csv", "r") as sample_data:
    with open("library.csv", "r") as lib_data:
        with open("results.csv", "w") as results:
            # other code

如果您使用的是 Python >= 2.7,您甚至可以将多个变量放入一个 with 中。

关于python - 为什么当我在运行程序后尝试打开 CSV 文件时,Python CSV 模块会将 CSV 文件设置为只读?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9008490/

相关文章:

csv - 如何在 scikit 中训练 svm 从 csv 文件中的训练数据中学习

JavaScript - 将 CSV 转换为 XLSX(最好不使用库)

csv - .导入CSV到sqlite3数据库

python - ClearCase 符号链接(symbolic link)未映射到 Windows 7 本身?

python - 如果字符串以另一个列表中的字符串开头,则替换为字符串

python - 如何在 celery 任务执行时停止它并在一段时间后继续执行?

python - Django,如何将数据对象从一个模板传递到另一个模板

bash - 使用 join/awk/sed 合并 CSV 文件

python - 将多个 csv 文件读取到单独的 pandas 数据帧中

python - 为什么 shell=True 将命令连接在一起时可以工作?