如何通过Python更改CSV文件中的值?

2024-10-02 02:31:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要能够在一个CSV股票文件中找到并更改一个值。我知道如何搜索值,但当我尝试使用csv.writer时,它会返回一个错误。在

Traceback (most recent call last):
  File "\\pbsrvfile\ExamAccounts$\ITCA76\ochot_krystian_a453\Task 3\Task 3.pyw", line 8, in <module>
    for row in writer:
TypeError: '_csv.writer' object is not iterable

我不知道它为什么这么做。到目前为止,我有以下代码:

^{pr2}$

有谁能告诉我如何修复错误或者是否有其他方法来修改这个值。我使用的是python3.2.3


Tags: 文件csvinmosttask错误callfile
1条回答
网友
1楼 · 发布于 2024-10-02 02:31:29

试试这个:

import csv
import os
code=input('Enter code to search: ')
with open ('Stock Levels.csv', 'r') as stock:
    reader=csv.reader(stock, delimiter=',')

    with open ('New Stock Levels.csv', 'w') as newStock:
        writer=csv.writer(newStock, delimiter=',')
        for row in reader:
            if code in row:
                print('Record found! \n')
                print('Code: '+row[0])
                print('Product name: '+row[1])
                print('Target level: '+row[2])
                target = int(row[2])
                print('Current level: '+row[3]+'\n')
                current = int(row[3])
                restock_amount = target - current
                restocked_value = restock_amount + current
                row[3] = restocked_value
                print(row[1]+' has been restocked to '+str(restocked_value))
            writer.writerow(row)
os.remove('Stock Levels.csv')
os.rename('New Stock Levels.csv', 'Stock Levels.csv')

如果使用with open而不是open,则不必关闭文件。在

代码是这样工作的:

  • 读取库存水平(您可能需要将分隔符更改为任何 你有)
  • 查看库存水平中的每一行,如果您看到 要搜索的代码
  • 将库存水平的所有行写回新库存 级别,包括修改后的行
  • 删除旧文件以使New Stock Levels.csv文件重命名为旧版本(确保有备份)
  • New Stock Levels.csv重命名为Stock Levels.csv

我不认为你可以直接修改一个文件,我认为你总是要读,修改,写入临时文件,然后重命名。在

相关问题 更多 >

    热门问题