python操作.csv文件

參考鏈接:

https://blog.csdn.net/weixin_36279318/article/details/79078255

需求:將a.csv中,相同手機號,只要有一個發送成功,則其餘改爲發送成功

代碼:

# -*- coding: utf-8 -*-
# @Time    : 2019/2/19 16:32
# @Author  : guigle
# @File    : excel_check.py
# @Software: PyCharm
import os
from collections import defaultdict
import csv

# 遍歷軟件運行的文件夾
path_dir = os.getcwd()
for root, dirs, files in os.walk(path_dir):
    for file in files:
        if file.endswith('.csv'):
            f = open(file, encoding='gbk')
            reader1 = csv.reader(f)
            # 電話列
            tel_col = [column[2] for column in reader1]
            tel_li = tel_col[1:]
            # print(tel_li)
            f.close()

            # 錯誤描述列
            f = open(file, encoding='gbk')
            reader2 = csv.reader(f)
            result_col = [column[6] for column in reader2]
            result_li = result_col[1:]
            # print(result_li)
            f.close()

            # 拿到電話號碼,及其對應的索引列表
            tel = defaultdict(list)
            tel_dic = {}
            for k, va in [(v, i) for i, v in enumerate(tel_li)]:
                tel[k].append(va)
                tel_dic = dict(tel)
                # print(tel_dic)

            # res = defaultdict(list)
            # res_dic = {}
            # for k, va in [(v, i) for i, v in enumerate(result_li)]:
            #     res[k].append(va)
            #     res_dic = dict(res)
            # print(dict(d))

            for v in tel_dic.values():
                print(v)
                # 索引列表,每個索引列表v對應一個空列表
                index_li = []
                if len(v) > 1:
                    for i in v:
                        index_li.append(result_li[i])
                    if "成功" in index_li:
                        for i in v:
                            result_li[i] = "成功"
            # 複製原文件
            f = open(file, encoding='gbk')
            # 1.newline=''消除空格行
            path01 = os.path.join(os.getcwd(), 'new_csv')
            if not os.path.exists(path01):
                os.mkdir(path01)
            path02 = os.path.join(path01, file)
            aim_file = open(path02, 'w', newline='', encoding='gbk')
            write = csv.writer(aim_file)
            reader = csv.reader(f)
            # for row in reader:
            #     row[6] = result_li[i]
            rows = [row for row in reader]
            # print(type(rows))
            print(rows)
            # 2.遍歷rows列表
            x = 0
            for row in rows:
                try:
                    row[6] = result_li[x]
                    # 3.把每一行寫到Aim.csv中
                    write.writerow(row)
                    x = x + 1
                except:
                    break

            f.close()
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章