【发布时间】:2019-11-21 04:02:20
【问题描述】:
我正在使用 CLI 创建一个待办事项列表,我想将一行的最后一个值,即状态从“未完成”更改为“完成”
我知道我们不能像那样编辑 csv 文件,所以我们要做的是读取它更改值然后覆盖现有文件。 这是 csv 文件:https://drive.google.com/open?id=1fqc79mtVmZGZ_pb_2zrzDGVDmyMFWi6C 我试过这个:
import csv
import argparse
parser = argparse.ArgumentParser()
parser.add_argument('-o', '--option', metavar='', help='-o <option> write either you want to add or view')
parser.add_argument('-l', '--select', metavar='', help='-l <used to select the task for modification')
args = parser.parse_args()
def modify():
select = args.select
with open('csv.csv', 'r+', newline='') as file:
lines = list(file)
lines[int(select)][7] = 1
with open('csv.csv', 'w+', newline='') as ifile:
writer = csv.writer(ifile)
writer.writerows(lines)
当我们运行这个时我想要那个:
python todoarg.py -o modify -l 2
它将第二行的状态从“未完成”更改为“完成”
【问题讨论】:
-
你目前得到了什么?
-
您是否收到错误消息?始终将完整的错误消息(从单词“Traceback”开始)放在问题中(作为文本,而不是屏幕截图)。还有其他有用的信息。
-
这就是你的全部代码吗?你为什么不运行函数
modify()?
标签: python python-3.x csv arguments argparse