基礎言語 - 18 日目 - csv、Excel ファイル操作

csv、Excelファイル操作

1.csvファイル操作

1. 定義

csv ファイルはカンマ区切り値ファイルと呼ばれます。コンテンツの各行は、異なる列の間でカンマで区切られています。

csv ファイルは Excel で直接開くことができ、データを保存して行と列の形式で表示できますが、Excel ファイルと比較して、データを保存することしかできず、数式と関数を保存することはできません。

2.csvファイルの読み込み操作

  • csv ライブラリのインポート

    import csv    
    
  • ファイルを開く

    open(csv文件路径, 'r', encoding='utf-8')
    
    可以不用手动关闭文件,文件操作结束就关闭文件。
    with open('files/data.csv', 'w', encoding='utf-8', newline='') as f:
     pass
    
  • ファイル読み取り操作

    1)csv.reader(文件对象):
    获取文件内容返回一个迭代器,以列表为单位返回每一行内容。
    2)csv.DictReader(文件对象):
    获取文件内容返回一个迭代器,以字典为单位返回第二行开始的每一行内容,第一行内容为字典的键,。
    
  • ファイルを閉じる

    文件对象.close()
    
  • 合計読み取り操作フロー コード

    import csv    # 先导包
    
    # 1)创建打开csv文件
    f = open('files/电影.csv', 'r', encoding='utf-8', newline='')
    
    # 2)获取文件内容
    # (1)csv.reader(文件对象): 获取文件内容返回一个迭代器,以列表为单位返回每一行内容。
    # reader1 = csv.reader(f)
    # print(list(reader1))
    
    # (2)csv.DictReader(文件对象):获取文件内容返回一个迭代器,以字典为单位返回第二行开始的每一行内容,第一行内容为字典的键,。
    reader2 = csv.DictReader(f)
    print(list(reader2))
    
    # 3)关闭文件
    f.close()
    

3.csvファイルの書き込み操作

  • csv ライブラリのインポート

  • ファイルを開く

    open('files/data.csv', 'w', encoding='utf-8', newline='')
    
  • ファイル書き込み操作: ライター オブジェクトの作成

    1) csv.writer(): writer オブジェクトを作成します。1 行がデータ書き込み時のリストに相当します。

    2) csv.DictWriter(): ライターオブジェクトを作成し、辞書単位でデータを書き込みます。

  • ファイルを閉じる

    文件对象.close()
    
  • 合計コード

    with open('files/data.csv', 'w', encoding='utf-8', newline='') as f:
        # ===========列表写入==========
        # writer1 = csv.writer(f)
        # # 一次写入一行
        # writer1.writerow(['姓名', '出生日期', '性别', '年龄'])
        # writer1.writerow(['小明', '19990616', '男', 23])
        # # 一次写入多行内容
        # writer1.writerows([
        #     ['小明', '19990616', '男', 23],
        #     ['小花', '19991216', '女', 23]
        # ])
    
        # ===========字典写入==========
        writer2 = csv.DictWriter(f, ['姓名', '出生日期', '性别', '年龄'])
        # 将字典的键写入文件开头
        writer2.writeheader()
    
        # 一次写入一行内容
        writer2.writerow({
          
          '姓名': '小华', '出生日期': '19890101', '性别': '男', '年龄': 33})
    

2. 仮想環境

1. システム環境

安装python就可以为计算机提供一个python的系统环境。

2. 仮想環境

程序员根据自己需要创建的python环境。
能创建虚拟环境的前提:存在系统环境。

3. 環境の役割

1)提供Python解释器
2)提供第三方库
虚拟环境可以让第三方库根据类别或者项目分开管理。

4. 仮想環境の使用に関する推奨事項

1)工作时:一个项目一个虚拟环境,且将虚拟环境直接放在项目中。
2)学习时:一类项目一个虚拟环境,不同类别的虚拟环境放在一个地方。

5. 仮想環境を作成する

  • pycharm (Windows) で作成する

    file -> Settings -> Project -> Python Interpreter
    

    ここに画像の説明を挿入
    赤いボックスの矢印をクリックしてドロップダウンし、[すべて表示] をクリックし、
    ここに画像の説明を挿入
    ここに画像の説明を挿入
    最後に [OK] をクリックして作成します. この仮想環境を使用して、この環境にモジュールをインストールします.

  • ディレクティブで作成

三、エクセルファイル操作

1.Excelファイルを知る

  • ワークブック: Excel ファイルはワークブックです。
  • ワークシート: ワークブックには複数のワークシート (少なくとも 1 つ) を含めることができます
  • セル: セルは、Excel ファイルにデータを保存するための基本単位です。
  • 行番号と列番号: セルの位置を決定する

2.Excelファイル読み込み操作

  • openpyxl ライブラリのインポート

    import openpyxl
    
  • Excel ファイルを開いてワークブック オブジェクトを作成する

    openpyxl.open(excel文件路径)
    openpyxl.load_workbook(文件路径)
    
  • ワークシートを取得

    工作簿对象.active
    工作簿对象.['工作表名称']
    
  • セルを取得

    工作表对象.cell(行号,列号)
    
  • セルのコンテンツを取得する

    单元格对象.value
    
  • 最大行数と最大列数を取得する(データを保持している有効な行と有効な列)

    工作表对象.max_row
    工作表对象.max_column
    
  • 合計 Excel ファイル読み取り操作コード

    import openpyxl
    
    # 1)打开excel文件创建工作簿对象
    # workbook = openpyxl.open('files/三国人物数据.xlsx')
    workbook = openpyxl.load_workbook('files/三国人物数据.xlsx')
    
    # 获取工作簿中所有的工作表的表名
    result = workbook.sheetnames
    print(result)       # ['全部人物数据', '三个国家的武力', '三个国家武将的武力', '三国武将数据', '三国文官数据']
    
    # 2)获取工作表
    sheet1 = workbook.active    # 获取1
    print(sheet1)
    
    sheet2 = workbook['三国武将数据']    # 获取2
    print(sheet2)
    
    # 3)获取单元格
    cell1 = sheet2.cell(8, 1)
    cell2 = sheet2.cell(12, 1)
    print(cell1, cell2)
    
    # 4)获取单元格内容
    print(cell1.value)
    print(cell2.value)
    
    # 5)获取最大行号和最大列号(保存了数据的有效行和有效列)
    # 工作表对象.max_row
    # 工作表对象.max_column
    print(sheet2.max_row)
    print(sheet2.max_column)
    
    
    # 获取表中内容例子
    # 获取第一列所有数据
    column1 = []
    for row in range(1, sheet2.max_row+1):
        cell = sheet2.cell(row, 1)
        column1.append(cell.value)
    
    print(column1)
    
    # 获取第一列到第3列所有的数据
    for col in range(1, 4):
        column = []
        for row in range(1, sheet2.max_row+1):
            cell = sheet2.cell(row, col)
            column.append(cell.value)
        print(column)
    

3.Excelファイルの書き込み操作

  • openpyxl ライブラリのインポート

    import openpyxl
    
  • 新しいワークブック:

    a. 新しいワークブック オブジェクトを作成する - ワークブック

    workbook = openpyxl.Workbook()
    

    : 実際の作業: 新しいワークブックを実際に作成するには、まずワークブックの対応するファイルが既に存在するかどうかを判断する必要があります. 存在する場合は、新しいファイルを作成する必要はありません.

  • ワークシート操作

    a. ワークシートの作成 - create_sheet

    工作簿对象.create_sheet(表名)
    

    注: 実際の新しいテーブル: 使用できない場合にのみ新しいテーブルを作成し、場合によっては直接開く

    b. ワークシートの削除 - 削除

    工作簿对象.remove(工作表对象)
    实际中的删除表:有的时候才删除
    
  • セル書き込み操作

    单元格对象.value = 数据
    
  • ドキュメントを保存

    工作簿对象.save(文件路径)
    
  • エクセルファイル書き込み操作の全体処理コード

    import openpyxl
    
    # 1)新建工作簿
    # 方法一:异常捕获
    try:
        workbook = openpyxl.open('files/students.xlsx')
    except FileNotFoundError:
        workbook = openpyxl.Workbook()
        
    # 2)新建工作表
    # a.创建工作表
    # 实际中的新建表:没有的时候才新建,有的时候直接打开
    if 'Python' in workbook.sheetnames:
       sheet = workbook['Python']
    else:
       workbook.create_sheet('Python')
    
    # b.删除工作表
    # 实际中的删除表:有的时候才删除
    if 'Sheet1' in workbook.sheetnames:
        workbook.remove(workbook['Sheet1'])
    print(workbook.sheetnames)
    
    # 3)单元格的写操作
    # 单元格对象.value = 数据
    java_sheet = workbook['Java']
    java_sheet.cell(1,3).value = '电话'   # 增加
    java_sheet.cell(2,1).value = None   # 删除
    java_sheet.cell(2,2).value = 'stu003'    # 修改
    
    # 4)保存
    workbook.save('files/students.xlsx')
    

おすすめ

転載: blog.csdn.net/simple_daytime/article/details/126273475