python批量从csv中复制指定区域到xlsx中

需求:

1.某个文件夹下有很多个csv 都有进行操作,因此要进行文件名的读取。

# 定义操作文件夹*****************************************
path1 = r'F:\AA' # 定义操作文件夹(!请替换成想要操作的文件夹)
list_name1 = []  # 保存文件名字
os.chdir(path1)  # 将操作文件夹定义为当前目录

# 定义函数*****************************************
def listdir(path, list_name):   # !函数功能:读取所有的后缀为.csv的文件
    i = 0
    for file in os.listdir(path):
        file_path = os.path.join(path, file)
        if os.path.isdir(file_path):
            listdir(file_path, list_name)
        elif os.path.splitext(file_path)[1] == '.csv':  # 可将.csv替换成其他的格式
            list_name.append(os.listdir(path)[i])   # 将满足格式的文件名字加入list_name中保存:保存如:001.csv
        i = i+1

2.要将所有的csv中的指定数据复制到一个工作簿中的两个sheet中

# 创建工作本与表*******************************************
wb_des = Workbook()  # 创建一个工作本
ws_des1 = wb_des.create_sheet("学习数据")  # 创建一个表
ws_des2 = wb_des.create_sheet("预测数据")  # 创建另一个表


# 定义复制函数*******************************************
def coy(list_name):  # !函数功能:实现多个csv制定区域的批量复制
    ii = 3  # 复制到目的工作本的第三行
    for list_name0 in list_name:  # 对读取到的所有的csv文件
        n = 0  # n为指示当前操作的行 (对csv操作都是基于所在的行 f_csv 保存的是很多行的东西)
        with open(list_name0) as f:
            f_csv = csv.reader(f)  # f_csv 读入了csv中的所有行
            jj = 2  # 复制目的坐标 从第二列开始
            jj2 = 2  # 复制目的坐标 从第二列开始
            for cell in f_csv:  # 遍历所有的行
                n = n + 1  # n指示当前遍历的是第几行
                if n >= 81 and n <= 567:  # 想要将 csv 第81行到 第567行 的第 9+1=10列 的元素 复制到 第一个目的表的 第 ii行 第jj列
                    ws_des1.cell(row=jj, column=ii, value=cell[9])
                    jj = jj + 1  # jj++ 移动向下一个循环将要复制到的列
                
                if n >= 5 and n <= 80:  # 想要将 csv 第5行到 第80行 的第 9+1=10列 的元素 复制到 第二个目的表的 第 ii行 第jj2列
                    ws_des2.cell(row=jj2, column=ii, value=cell[9])
                    jj2 = jj2 + 1

        ii = ii + 1  # 复制完1行就复制下一行

 

你可能感兴趣的:(python批量从csv中复制指定区域到xlsx中)