Python脚本,用于根据检查条件在csv输出文件的每行末尾添加新值

2024-04-26 14:13:34 发布

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

我想编写一个python脚本,在CSV文件中由脚本的初始部分生成的行的末尾添加新值。 CSV文件的值如下

name,isactive,ful_name,emailaddress
rajesh,active,Rajesh Pidikiti,myemail@corp.####.com
james,active,James wood,mail@mail.com

我需要考虑每一行的名称,并检查用户是否具有管理员权限(通过运行一个curl命令)。如果用户是admin,则在行(新列)的末尾添加admin作为新值。如果没有,则添加user作为新值

输出如下

name,isactive,ful_name,emailaddress,isadmin 
rajesh,active,Rajesh Pidikiti,myemail@corp.####.com,admin 
james,active,James wood,mail@mail.com,user

我尝试过创建函数和for循环,但没有成功。我可以将结果附加到输入或创建新的输出文件

这就是我到目前为止写的

def to_add_new_col(input_file,output_file)
        with open(input_file, 'rb') as infile:
                with open(output_file, 'wb') as outfile:
                        reader = csv.reader(infile, lineterminator='\n')
                        writer = csv.writer(outfile, lineterminator='\n')

                        check_and_add(reader, writer)

def check_and_add(reader, writer)
        for i in reader:
                for field in (i)
                        if(curl_result(field):
                                i=admin
                        else
                                i=user

                writer.writerow(i)

Tags: 文件csvname脚本comaddforadmin
1条回答
网友
1楼 · 发布于 2024-04-26 14:13:34

您可以使用CSV读写器的默认设置。首先需要读取标题行,添加新的列标题,然后将其写入输出CSV文件。然后,对于输入CSV文件中的每一行,将is_admin()函数传递给一个要测试的用户,该函数返回adminuser(我创建了一个虚拟函数,它只测试用户名的字符数是偶数还是奇数)。然后可以将此返回值添加到行中的值列表中,并写入输出

如果您不确定这是如何工作的,请添加一个print语句以提供帮助。例如,添加print(row)

import csv

def is_admin(user):
    """ Test if user is admin (replace with your curl test) """
    return 'admin' if len(user) % 2 == 0 else 'user'


with open('input.csv', newline='') as f_input, open('output.csv', 'w', newline='') as f_output:
    csv_reader = csv.reader(f_input)
    csv_writer = csv.writer(f_output)
    csv_writer.writerow(next(csv_reader) + ['isadmin'])

    for row in csv_reader:
        csv_writer.writerow(row + [is_admin(row[0])])

这将为您提供一个output.csv文件,其中包含:

name,isactive,ful_name,emailaddress,isadmin
rajesh,active,Rajesh Pidikiti,myemail@corp.####.com,admin
james,active,James wood,mail@mail.com,user

相关问题 更多 >