• 文件处理


    一.文件

      1.简介

    二.文件的相关操作

      1.打开文件 例如:  f = open("F:\text.txt", 'r') 只读模式,不可写入

      

      2.读取文件 例如: f.readlines 读取一行

      3.写入 f.write("日日有见才")

      4.测试代码

    复制代码
    Python 3.7.1 (default, Dec 10 2018, 22:54:23) [MSC v.1915 64 bit (AMD64)] on win32
    Type "help", "copyright", "credits" or "license()" for more information.
    >>> f  = open("F:\text.txt", 'r')
    >>> for i in f.readlines():
        print(i)
    
    1235456撒大声地
    >>> f.close()
    >>> f = open("F:\text.txt", 'a+')
    >>> f.write("日日有见才")
    5
    >>> f.seek(0)
    0
    >>> f.read()
    '1235456撒大声地日日有见才'
    >>> f.close()
    >>> 
    复制代码

    三.将excel文件存为csv文件

      使用函数:pandas.read_exceliosheet_name = 0header = 0names = Noneindex_col = Noneparse_cols = Noneusecols = Nonesqueeze = Falsedtype = Noneengine = Noneconverter = Nonetrue_values = Nonefalse_values = Noneskiprows = Nonenrows = Nonena_values = Nonekeep_default_na = Trueverbose = Falseparse_dates = Falsedate_parser =无千位=无comment = Noneskip_footer = 0skipfooter = 0convert_float = Truemangle_dupe_cols = True** kwds 将Excel文件读入pandas DataFrame。

      1.CSV简介: CSV格式(Comma-Separated Values,逗号分隔值)是一种通用的,相对简单的文件格式,可应用在程序之间转移表格数据。由此看来,csv格式文件的应用还是很广大的。

      2.io : 路径

      3.sheet_name : str,int,list或None,默认值为0  (就是哪个表单)

    字符串用于表单名称。整数用于零索引表单位置。字符串/整数列表用于请求多个工作表。指定“无”以获取所有工作表。

      4.to_excel将DataFrame写入Excel文件。

      to_csv将DataFrame写入逗号分隔值(csv)文件。

      read_csv将逗号分隔值(csv)文件读入DataFrame。

      read_fwf将固定宽度格式化的行表读入DataFrame。

    复制代码
    # -*- coding:utf-8
    import pandas as pd
    
    def ExcelToCsv_1(StartName, SheetName, EndName):
        '''
        函数功能: 将excel格式文件转换为csv格式文件,使用iat方法
        StartName: excel表格的文件路径
        SheetNmae: excel表格中的表格名称
        EndName:   csv文件的保存路径
        '''
        grade = pd.read_excel(StartName, sheet_name=SheetName) #从IO路径读取sheet表单
        for i in range(len(grade.index)):        #行
            for j in range(1, len(grade.columns)): # 列
                if grade.iloc[i, j] == '优秀':            
                    grade.iat[i, j] = 90
                elif grade.iloc[i, j] == '良好':
                    grade.iat[i, j] = 80
                elif grade.iloc[i, j] == '合格':
                    grade.iat[i, j] = 60
                else:
                    grade.iat[i, j] = 0     #空格换成0
        grade.to_csv(EndName)       #CSV
     
    '''
    def ExcelToCsv_2(StartName, SheetName, EndName):
        
        函数功能: 将excel格式文件转换为csv格式文件,使用replace方法
        StartName: excel表格的文件路径
        SheetNmae: excel表格中的表格名称
        EndName:   csv文件的保存路径
        缺点: 无法将空值替换为0
        
        grade = pd.read_excel(StartName, sheet_name=SheetName)
        Grade = grade.replace("优秀", "90")
        Grade = Grade.replace("良好", "80")
        Grade = Grade.replace("不合格", "60")
        Grade = Grade.replace("合格", "60")
        Grade = Grade.replace("NaN", "0")
        Grade.to_csv(EndName)
    '''
    ExcelToCsv_1("D:\Python_1.xlsx", "Sheet1", "D:\Python_1.csv")
    #ExcelToCsv_2("D:\Python_2.xlsx", "Sheet1", "D:\Python_2.csv")
    复制代码

     效果

    五.CSV格式文件转换成html

    先看一下HTML中表格的代码

    复制代码
    #返回一行代码
    def One_line_of_code(str,thNum):
        text = '<tr>'
        for i in range(thNum):
            if len(str[i+1]) == 0:  #如果是空,即长度为0
                str[i+1]=0
                print(str[i+1])
            tem = '<td align="center">{}</td>'.format(str[i+1])
            text +=tem
        text+='</tr>'
        return text
    
    def creat_HTML(io,IO,thNum):
        hF = open(IO, 'w') #创建一个HTML文件
        #写入代码
        HTML1 = '''
    <!DOCTYPE HTML>
    <html>
    <body>
    <meta charset=gbk2313>
    <h1 align=center>Python成绩表</h2>
    <table border='blue'>
    '''
        HTML2 = "</table>
    </body>
    </html>"
        hF.write(HTML1)
        hF.write(csv_to_HTML(io,thNum))
        hF.write(HTML2)
        hF.close()
    
    def csv_to_HTML(io,thNum):
        csv = open(io,'r',encoding="utf-8")
        ls = []                         #读取CSV里面的内容并且以逗号为分隔转换为ls列表
        for line in csv:
            line = line.replace('
    ', '')
            ls.append(line.split(','))
        k=''
        for i in range(1,thNum+1):
            k+=('<td>{}&nbsp;</td>
    '.format(ls[0][i]))
        K=''  
        for i in range(1,len(ls)):
            K+=One_line_of_code(ls[i],thNum)
        return (k+K)
    
    if __name__ =='__main__':
        creat_HTML("D:\Python_2.csv", "D:\Python_2.html", 5)
    复制代码

    效果

    六.CSV转json

    复制代码
    import json
    fr = open("D://Python_2.csv", "r", encoding='utf-8')   #转换为UTF-8,否则出现编码gbk编码错误
    
    ls =[]
    
    for line in fr:
        line = line.replace("
    ", "") #去除换行
        ls.append(line.split(','))   #去除空格
    
    fr.close() #把CSV里面的内容读取到列表里,并且关闭文件
    
    fw = open("D://Python_json.json", "w") #创建一个新文件,模式为覆盖写
    
    for i in range(1,len(ls)):
        ls[i] = dict(zip(ls[0], ls[i]))  #zip为内置函数,能够将两个长度相同的 列表组 合成一个关系对 
    
    json.dump(ls[1:],fw, sort_keys=True, indent=4, ensure_ascii=False)  ensure...==False 保种可以输出中文
    fw.close()
    复制代码

    效果

     
     
  • 相关阅读:
    php 安全过滤函数
    当magic_quotes_gpc=off
    php 编译参数详解
    mabties Mapper 实体类与数据库字段不匹配问题,java.sql.SQLSyntaxErrorException: Unknown column 'xxx' in 'field list'
    一文了解SpringBoot如何开启热部署
    mysql 开启root远程连接_mysql开启root用户可远程登录方法
    使用的tk集成mybatis,报No MyBatis mapper was found in的警告解决方案
    mysql运行报The server time zone value 'Öйú±ê׼ʱ¼ä' is unrecognized or represents more than one time zone的解决方法
    JDBC出现The server time zone value 'Öйú±ê׼ʱ¼ä' is unrec问题 数据库时区问题
    Caused by: java.lang.ClassNotFoundException: org.springframework.boot.context.properties.Configurati springboot的版本和springcloud的版本不一致导致
  • 原文地址:https://www.cnblogs.com/abing123/p/10818289.html
Copyright © 2020-2023  润新知