相关疑难解决方法(0)

使用Python进行内联CSV文件编辑

我可以使用Python的CSV库或类似技术内联修改CSV文件吗?

当前我正在处理文件并更新第一列(名称字段)以更改格式.我的代码的简化版本如下所示:

with open('tmpEmployeeDatabase-out.csv', 'w') as csvOutput:
    writer = csv.writer(csvOutput, delimiter=',', quotechar='"')

    with open('tmpEmployeeDatabase.csv', 'r') as csvFile:
        reader = csv.reader(csvFile, delimiter=',', quotechar='"')

        for row in reader:
            row[0] = row[0].title()
            writer.writerow(row)
Run Code Online (Sandbox Code Playgroud)

哲学有效,但我很好奇我是否可以进行内联编辑,这样我就不会复制文件了.

我已尝试过以下操作,但这会将新记录追加到文件末尾而不是替换它们.

with open('tmpEmployeeDatabase.csv', 'r+') as csvFile:
    reader = csv.reader(csvFile, delimiter=',', quotechar='"')
    writer = csv.writer(csvFile, delimiter=',', quotechar='"')

    for row in reader:
        row[1] = row[1].title()
        writer.writerow(row)
Run Code Online (Sandbox Code Playgroud)

python csv file-io

20
推荐指数
2
解决办法
3万
查看次数

_csv.Error:迭代器应该返回字符串,而不是字节(你是否在文本模式下打开文件?)

在我的csv计划开始时:

import csv     # imports the csv module
import sys      # imports the sys module

f = open('Address Book.csv', 'rb') # opens the csv file
try:
    reader = csv.reader(f)  # creates the reader object
    for row in reader:   # iterates the rows of the file in orders
        print (row)    # prints each row
finally:
    f.close()      # closing
Run Code Online (Sandbox Code Playgroud)

错误是:

    for row in reader:   # iterates the rows of the file in orders
_csv.Error: iterator should return strings, not bytes (did you …
Run Code Online (Sandbox Code Playgroud)

python csv

17
推荐指数
1
解决办法
3万
查看次数

标签 统计

csv ×2

python ×2

file-io ×1