Python CSV输出未正确保存结果

Python CSV输出未正确保存结果,python,csv,Python,Csv,Python初学者在这里向开发者寻求一些指导。我在将输出保存到CSV文件时遇到问题,当前输出没有保存所有数据,并且没有正确计算CSV中的每个行ID(0、1、2、3等)。有什么建议吗 当前代码: def get_length(file_path): with open("data.csv", "r") as csvfile: reader = csv.reader(csvfile) reader_list = list

Python初学者在这里向开发者寻求一些指导。我在将输出保存到CSV文件时遇到问题,当前输出没有保存所有数据,并且没有正确计算CSV中的每个行ID(0、1、2、3等)。有什么建议吗

当前代码:

def get_length(file_path):
    with open("data.csv", "r") as csvfile:
        reader = csv.reader(csvfile)
        reader_list = list(reader)
        return len(reader_list)

def append_list(file_path,stock_status,stock_name,date_time):
    fieldnames = ['id','stock status','stock name','date/time']
    next_id = get_length(file_path)
    with open(file_path, "a+") as csvfile:
        writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
        writer.writerow({
            "id": next_id,
            "stock status": stock_status,
            "stock name": stock_name,
            "date/time": date_time,
        })

def check_add_cart():
    try:
        browser.find_element_by_xpath('//button[normalize-space()="Add to Cart"]')
    except NoSuchElementException:
        return False
    return True

cycle = 2
with open('url.txt', 'r') as f:
    url_list = [line.strip() for line in f]

for i in range(cycle): 
    for url in url_list:
        browser.get(url)
        time.sleep(6)
    if check_add_cart():
        append_list("data.csv", "In-Stock =)", browser.title, now.strftime('%Y-%m-%d %H:%M:%S'))
    elif not check_add_cart():
        append_list("data.csv", "Out-Of-Stock =(", browser.title, now.strftime('%Y-%m-%d %H:%M:%S'))
    else:
        print('Error')
browser.close()
当前CSV输出:

0,Out-Of-Stock =(,Sony PlayStation 5 Console,2021-06-05 17:45:01

2,Out-Of-Stock =(,Sony PlayStation 5 Console,2021-06-05 17:45:01
0,Out-Of-Stock =(,Sony PlayStation 5 Console,2021-06-05 17:45:00
1,In-Stock =),AMD Ryzen 5 5600x 4th Gen 6 Core 12 Threads,2021-06-05 17:45:01
2,Out-of-Stock =(,EVGA Geforce Rtx 3080 XC3,2021-06-05 17:45:02
3,Out-Of-Stock =(,Gigabyte Nvidia Geforce RTX 3080,2021-06-05 17:45:03
所需的CSV输出:

0,Out-Of-Stock =(,Sony PlayStation 5 Console,2021-06-05 17:45:01

2,Out-Of-Stock =(,Sony PlayStation 5 Console,2021-06-05 17:45:01
0,Out-Of-Stock =(,Sony PlayStation 5 Console,2021-06-05 17:45:00
1,In-Stock =),AMD Ryzen 5 5600x 4th Gen 6 Core 12 Threads,2021-06-05 17:45:01
2,Out-of-Stock =(,EVGA Geforce Rtx 3080 XC3,2021-06-05 17:45:02
3,Out-Of-Stock =(,Gigabyte Nvidia Geforce RTX 3080,2021-06-05 17:45:03

你为什么要做两个周期

我认为错误在于

if check_add_cart():
        append_list("data.csv", "In-Stock =)", browser.title, now.strftime('%Y-%m-%d %H:%M:%S'))
    elif not check_add_cart():
        append_list("data.csv", "Out-Of-Stock =(", browser.title, now.strftime('%Y-%m-%d %H:%M:%S'))
    else:
        print('Error')

应缩进url\u列表中url的
循环中:
循环,否则对于列表的最后一个url,每个循环只执行一次。

是否调用了else打印(“错误”)?否,它未在终端上打印更改为:
打开(文件路径,“a+”,换行=“”)作为csvfile:
这将删除多余的空行,并可能有助于执行
get_length()
例程。理想情况下,这不应该算空白行。此外,提供一个帮助回答。因为我们没有输入CSV文件,所以无法运行脚本来重现问题,并检查解决方案是否正确。