zoukankan      html  css  js  c++  java
  • 文件的读写笔记

    文件的使用

    一、文件的概述

    文件是一个存储在辅助存储器上的数据序列,可以包含任何数据内容。概念上,文件是数据的集合和抽象,类似的,函数是程序的集合和抽象,用文件形式组织和表达数据更有效也更为灵活,

    二、文件包括两种类型:文本文件和二进制文件。

    1.文本文件

    一般由单一特定编码的字符组成,如UTF-8编码,内容容易统一展示和阅读。

    2.二进制文件

    直接由比特0和比特1组成,没有统一字符编码,文件内部数据的组织格式与文件用途有关。

    三、文件的打开

    <变量名>=open(<变量名>,<打开模式>)

    文件的打开模式

    文件的打开模式 含义
    'r' 只读模式,如果文件不存在,返回异常FileNotFoundError,默认值
    ‘w' 覆盖写模式,文件不存在则创建,存在则完全覆盖
    'x' 创建写模式,文件不存在则创建,存在则返回异常FileNotFoundError
    'a' 追加写模式,文件不存在则创建,存在则在文件最后追加内容
    'b' 二进制文件模式
    't' 文本文件模式,默认值
    '+' 与r/w/x/a一同使用,在原功能基础上增加读写功能

    注意:'r','w','x','a'可以和'b','t','+'组合使用

    例如:打开文本文件模式

    text=open('7.1.txt','rt')

    打开二进制文件

    text=open('7.1.txt','rb')

    四、文件的读写

    读取

    操作方法 含义
    <file>.read(size=-1) 从文件中读入整个文件内容,如果给出参数,读入前size长度的字符串或者字符流
    <file>.readline(size=-1) 从文件中读入一行内容,如果给出参数,读入该行前size长度的字符串或者字符流
    <file>.readlines(hint=-1) 从文件中读入所有行,以每行为元素形成一个列表如果给出参数,读入hint行

    写入

    方法 含义
    <file>.write(s) 向文件写入一个字符串或者字符流
    <file>.writelines(lines) 将一个元素全为字符串的列表写入文件
    <file>.seel(offset) 改变当前文件操作指针的位置,offset的值:0--文件开头;1--当前位置;2--文件结尾

     

     

     

    五、文件的关闭

    <变量名>.close()

    六、文件的简单应用

     1 >>> wj=open('C:\\Users\Administrator\Desktop\Python\文件的打开.txt','rt')      #打开文件
     2 >>> print(wj.read())                                      #输出文件内容
     3 唐诗宋词元曲
     4 >>> wj.close()                                         #关闭文件
     5 >>> lp=open('C:\\Users\Administrator\Desktop\Python\文件的打开.txt',"w+")       #打开文件的读写模式
     6 >>> text=["是中国传统知识"]                                   #将要写入的内容
     7 >>> lp.writelines(text)                                    #将文件写入
     8 >>> lp.seek(0)
     9 0
    10 >>> for line in lp:                                      #输出文件内容
    11     print(line)
    12 
    13     
    14 是中国传统知识
    15 >>> lp.close()                                          #关闭文件

    七,将两个excle文件并存为csv格式文件

     代码如下

    # -*- coding:utf-8
    import pandas as pd
    
    def zhuan1(wenjian, mingcheng, baocun):
        grade = pd.read_excel(wenjian, sheet_name=mingcheng)
        for i in range(len(grade.index)):
            for j in range(1, len(grade.columns)):
                if grade.iloc[i, j] == '优秀':#查看第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
                elif grade.iloc[i,j] == '不合格':
                    grade.iat[i,j] = 60
                else:
                    grade.iat[i, j] = 0
        grade.to_csv(baocun)
    
    
    def zhuan2(wenjian, mingcheng, baocun):
        grade = pd.read_excel(wenjian, sheet_name=mingcheng)
        Grade = grade.replace("优秀", "90")#替换为分数形式
        Grade = Grade.replace("良好", "80")
        Grade = Grade.replace("不合格", "60")
        Grade = Grade.replace("合格", "60")
        Grade = Grade.fillna(value = 0)
        Grade.to_csv(baocun)
    
    zhuan2("D:\\Python成绩(2).xlsx", "Sheet1", "D:\\Python_1.csv")
    zhuan1("D:\\Python成绩登记信计(1).xlsx", "Sheet1", "D:\\Python_2.csv")

    结果如图所示

    原图:python成绩(2)

    转换之后

    原图:python成绩登记信计(1)

    转换之后

    八、尝试将csv文件转化为html文件

    # -*- coding: utf-8 -*-
    """
    csv-->html
    
    @author: xiayiLL
    """
    
    def Change(csvwj,htmlwj,lie):
        seg1='''
    <!DOCTYPE HTML>\n<html>\n<body>\n<meta charset=gbk2313>
    <h1 align=center>Python成绩表</h2>
    <table border='blue'>\n'''
        seg2="</table>\n</body>\n</html>"
        seg3= "</tr>\n"
        CH1=open(csvwj,'r',encoding="utf-8")#打开文件
        ls = []
        for line in CH1:
            line = line.replace('\n', '')
            ls.append(line.split(','))
        CH1.close()
        CH2=open(htmlwj,'w')
        CH2.write(seg1)
        for i in range(1, lie+1):        # 写入表格的表头(即第1行)
            CH2.write('<th width="20%">{}</th>\n'.format(ls[0][i]))
        CH2.write(seg3)
        for i in range(1, len(ls)):  # 写入表格的数据,从第2行开始为数据
            CH2.write(fill_wj(ls[i],5))
        CH2.write(seg2)                                            # 写入html文件尾部
        CH2.close()
    
    def fill_wj(biaoge,length=4):
        wj='<tr>'
        for i in range(length):
            tmp = '<td align="center">{}</td>'.format(biaoge[i+1])
            wj += tmp
        wj += "</tr>\n"
        return wj
    
    Change("D:\\Python_3.csv","D:\\Python_3.html",5)

    结果如图所示

    九、书写CGI文件

    代码实现

     1 # -*- coding:utf-8
     2 
     3 def fill_data(excel, length=4):
     4     text = '<tr>'
     5     for i in range(length):
     6         tmp = '<td align="center">{}</td>'.format(excel[i+1])
     7         text += tmp
     8     text += "</tr>\n"
     9     return text
    10 
    11 def GetCsv(csvFile):
    12 
    13     ls = []
    14     csv = open(csvFile, 'r', encoding="utf-8")
    15     for line in csv:
    16         line = line.replace('\n', '')
    17         ls.append(line.split(','))
    18     return ls
    19 
    20 
    21 def CsvToHtml(csvFile, thNum):
    22 
    23     csv_list = GetCsv(csvFile)          # 获得csv文件数据
    24     
    25     print("Content-type:text/html\r\n\r\n")
    26     print('''
    27 <!DOCTYPE HTML>\n<html>\n<body>\n<meta charset=gbk2313>
    28 <h1 align=center>Python成绩表</h2>
    29 <table border='blue'>\n''')             # 写html文件首部
    30     for i in range(1, thNum+1):         # 写表格的表头(即第1行)
    31         print('<th width="20%">{}</th>'.format(csv_list[0][i]))
    32     print("</tr>\n")
    33     for i in range(1, len(csv_list)):   # 写表格的数据,从第2行开始为数据
    34         print(fill_data(csv_list[i], 5))
    35     print("</table>\n</body>\n</html>") # 写html文件尾部
    36 
    37 CsvToHtml("D:\\Python_3.csv", 5)

  • 相关阅读:
    页面与服务器的交互,,经典案例
    setInterval和clearInterval
    setAttribute,,,getAttribute,,,,
    字符串拼接
    上下图片连动效果
    文本框获得焦点
    获取机器上的时间
    检测奇偶性
    置顶博文
    P1962 斐波那契数列 题解
  • 原文地址:https://www.cnblogs.com/xiayiLL/p/10783667.html
Copyright © 2011-2022 走看看