我正在使用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
它将第二行的状态从“未完成”更改为“完成”
我也找到了一种不用熊猫的方法:
我知道这是一个新的方式,但它的工作很好哈哈
你很接近,我查看了你的csv,因为你有一个标题行,我认为最好使用你的
S.No
作为唯一的taskid:我正在使用熊猫数据帧来简化它。
df.loc[...]
行用于选择命令行中给定的任务id中的每一行,并将Status列更改为“complete”。你知道吗我还做了一个我认为您会感兴趣的小改动:我只是在解析器中为
select
选项添加了一个小的action="append"
。这意味着您可以通过执行以下操作一次更改多个任务:对于
option
参数,我建议您在解析器中使用choices
参数:关于如何根据给
option
参数的值来选择要使用的方法,我认为我没有一个好的方法来做到这一点,但也许类似的方法可以工作:相关问题 更多 >
编程相关推荐