csv以及xlsx文件以及面向对象编程(OOP)

csv以及xlsx文件以及面向对象编程(OOP)

1、读取CSV文件

encoding='utf-8-sig'->有字节序标记

import csv
with open('resources/2018年北京积分落户数据.csv', 'r', encoding='utf-8-sig') as f:
    # delimiter参数默认是逗号,可根据实际情况指定
    # quotechar参数默认值是引号,但是如果值不是引号包围需要重新指定
    reader = csv.reader(f, delimiter=',' ,quotechar='""')
    # 通过遍历csvreader打印出csv文件
    for read in reader:
        print(read)

2、将数据写入CSV文件

import csv
# 在打开文件的时候在Open括号里面加newline='',可以防止在往里面加数据的时候出现空的列表
with open('resources/2018年北京积分落户数据.csv', 'a', encoding='utf-8-sig', newline='') as f:
    writer = csv.writer(f)
    # writer.writerow([....])
    writer.writerows([[..],[..],[..]])

3、将CSV文件写入excel文件中

from openpyxl.styles import Alignment,Font
import csv
import openpyxl
#创建工作簿
workbook = openpyxl.Workbook()

# 设置工作表
sheet = workbook.active

# 添加表头
sheet.append(('编号', '姓名', '出生日期', '公司名称', '积分值'))

# 修改工作表的名字
sheet.title = '2021年北京积分数据'

# 打开CSV文件并将数据写入xlsx文件中
with open('resources/2021年北京积分数据.csv', 'r', encoding='utf-8-sig') as f:
    reader = csv.reader(f)
    for read in reader:
        if read:
            sheet.append(read)
sheet.column_dimension['D'].width = 20  # 单独设置一列的宽度

# 利用循环设置所有列的宽度
cols_width={
    'A':10,
    'B':10,
    'C':10,
    'D':20,
    'E':10
}
for key in cols_width:
    sheet.column_dimension[key].width=cols_width[key]

# 修改第一行的格式
for col in range(1, 6):
    # bold是否加粗
    sheet.cell(1, col).font=Font(name='华文行楷', size=22, bold=True)
    # 改对齐方式
    sheet.cell(1, col).alignment=Alignment(horizontal='center', vertical='center')

# 保存文件
workbook.save('2021年北京积分落户表.xlsx')

4、读取EXCEL文件

import openpyxl
wb = openpyxl.load_workbook('resources/口罩销售数据.xlsx')
# 获得工作表头
sheet = wb.worksheets[0]
for row in range(2, sheet.max_row+1):
    for col in 'ABCDEF':
        print(sheet[f'{col}{row}'].value, end='\t')
     print()

5、面向对象编程

用对象的概念将数据和操作数据的函数从逻辑上组织成一个整体;
在面向对象的世界里,我们要解决任何问题都是通过先创建对象,然后给对象发送消息
对象  -  接收消息的实体  ---》具体概念
     1、一切皆为对象
     2、每个对象都是独一无二的
     3、对象都有静态特征(属性)-(都是名词)和动态特征(行为)-(都是动词)
     4、对象都属于某个类
类    -   对象的蓝图和模板  ---》抽象概念

面向对象编程的步骤:
1、定义类
	1、数据抽象:给出对象的静态特征  --》属性
	2、行为对象:给出对象的动态特征  --》方法
2、创建对象
3、给对象发消息
class Rectangle:
    # 初始化数据对象
    def __init__(self, width, height):
        self.width = width
        self.height = height
    # 行为抽象
    # 方法就是发给对象的消息,第一个参数self就是接收信息的对象
    def perimeter(self):
        return (self.width + self.height)*2
    def area(self):
        return self.height * self.width
  
# 创建对象
rect = Rectangle(3, 4)

# 给对象发消息
print(f'矩形的周长是:{rect.perimeter()}')
print(f'矩形的面积是:{rect.area()}')
# 定义类描述数字时钟
import time
import os
class Clock:
    def __init__(self, hour=0, minute=0, second=0, mode_12=False):
        self.hour = hour
        self.minute = minute
        self.second = second
        self.mode_12 = mode_12
     def show(self):
        if self.modef_12:
            if self.hour < 12:
                return f'{self.hour:0>2}:{self.minute:0>2}:{self.second:0>2}AM'
            else:
                hour = self.hour-12 if self.hour > 12 else self.hour
                return f'{hour:0>2}:{self.minute:0>2}:{self.second:0>2}PM'
      def run(self):
        self.second += 1
        if self.second == 60:
            self.second = 0
            self.minute += 1
            if self.minute == 60:
                self.mintue = 0
                self.hour += 1
                if self.hour == 24:
                    self.hour = 0

clock = Clock(mode_12=True)
# 重复执行知道程序结束
while True:
    # 通过os模块的system函数调用系统命令
    # cls清屏
    os.system('cls')
    print(clock.show())
    time.sleep(1)
    clock.run()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值