Python DictWriter 使用循环和 if else 条件在输入文件的列中附加状态



我正在尝试使用代码 1 自动化工作,它工作正常。但是我需要更新输入文件列中每一行的状态,无论它是否已被作废。我正在构建代码 2,但我不成功(代码不完整(。我还有以下问题:

  1. 我不能使用没有硒DictReaderDictWriter来读取文件和写入一列吗?
  2. 我使用 segui 作为变量来检查按钮在网页中是否可用,并尝试将按钮值的文本存储在变量中,这是正确的方法吗?
  3. writer.writerow()附加状态列的方法是否正确?

输入文件数据:

CONTEXT_ID,TRXN_ID,状态 12843,8151568, 13122,8160706,

代码 1:(成功运行(

import csv
path = r"C:UsersmaxxDownloadsCSVfile9.csv"
file = open(path, newline = '')
obj = csv.DictReader(file)
from selenium import webdriver
driver = webdriver.Chrome('chromedriver.exe')
driver.get('https://prodmirror.url.com')
URL_PATTERN = 'https://prodmirror.url.com/{}/42/space/transactionvoid.esp?TRANSACTIONID={}'
for row in obj:
url = URL_PATTERN.format(row['CONTEXT_ID'], row['TRXN_ID'])
driver.get(url)
find_element_by_xpath("//input[@value='Void This Transaction']").click()

代码 2:(不完整的代码(

import csv
path = r"C:UsersmaxxDownloadsCSVfile9.csv"
file = open(path, newline = '')
fieldnames = ['CONTEXT_ID','TRXN_ID','STATUS']
obj = csv.DictWriter(file, fieldnames=fieldnames)
from selenium import webdriver
driver = webdriver.Chrome('chromedriver.exe')
driver.get('https://prodmirror.url.com')
URL_PATTERN = 'https://prodmirror.url.com/{}/42/space/transactionvoid.esp?TRANSACTIONID={}'
for row in obj:
url = URL_PATTERN.format(row['CONTEXT_ID'], row['TRXN_ID'])
driver.get(url)
segui = driver.find_element_by_xpath("//input[@value='Void This Transaction']").text
if segui == 'Void This Transaction':
driver.find_element_by_xpath("//input[@value='Void This Transaction']").click()
writer.writerow({'STATUS': 'Voided'})
else:
writer.writerow({'STATUS': 'Not Voided'})

你在写信给你的作家时迭代你的读者

import io, csv, random
data = '''
CONTEXT_ID,TRXN_ID,STATUS
2843,8151568,
13122,8160706,
'''
choices = ['Voided', 'Not Voided']
f = io.StringIO(data)
o = io.StringIO()
reader = csv.DictReader(f)
writer = csv.DictWriter(o, reader.fieldnames)
writer.writeheader()
for d in reader:
# determine status here
status = random.choice(choices)
# set status
d['STATUS'] = status
writer.writerow(d)
print(o.getvalue())

最新更新