zoukankan      html  css  js  c++  java
  • 文件的读写学习笔记和我的第一个网页

    一、文件读写的学习笔记

    现有文件 ex.txt

    1、基本操作:

     1 f = open('ex.txt','r+') #encoding参数可以指定文件的编码
     2 print(f.readline()) #读一行
     3 print(f.readlines())#读取所有文件内容,返回一个list,元素是每行的数据,大文件时不要用,因为会把文件内容都读到内存中,内存不够的话,会把内存撑爆
     4 print(f.read()) #读取所有内容,大文件时不要用,因为会把文件内容都读到内存中,内存不够的话,会把内存撑爆
     5 print(f.readable()) #判断文件是否可读
     6 print(f.writable()) #判断文件是否可写
     7 print(f.encoding) #打印文件的编码
     8 print(f.tell()) #获取当前文件的指针指向
     9 f.seek(0) #把当前文件指针指向哪
    10 f.write('稻香') #写入内容
    11 f.writelines(['稻香','周杰伦']) #将一个列表写入文件中
    12 f.flush() #写入文件后,立即从内存中把数据写到磁盘中
    13 f.truncate() #清空文件内容
    14 f.close() #关闭文件

    2、文件的打开模式:

    ‘r’     只读模式。如果文件不存在,返回异常FileNotFoundError,默认值;

    ‘w’    覆盖写模式,文件不存在则创建,存在则完全覆盖;

    'x'     创建写模式,文件不存在则创建,存在则返回异常FileExistError;

    ‘a’    追加写模式,文件不存在则创建,存在则在文件最后追加内容;

    ‘b’    二进制文件模式;

    ‘t’    文本文件模式,默认值;

    '+'    与r/w/x/a一同使用,在原功能的基础上增加同事读写的功能

    3、文件的指针:

    f = open('ex.txt','a+')
    print('f.read',f.read())#读不到东西,因为a+模式指针默认指向文件末尾
    f.seek(0)
    print('f.read',f.read())#加入seek(0)后可以读到
    f.write('test')
    f.seek(0)
    print('f.read',f.read())#seek移动完文件指针后,是只能读,写的时候还是在文件末尾写

    4、读取大文件的高效做法:

    用上面的read()和readlines()方法操作文件的话,会先把文件所有内容读到内存中,这样的话,内存数据一多,非常卡,高效的操作,就是读一行操作一行,读过的内容就从内存中释放了

    f = open('ex.txt','r+')
    for line in f:#读完一行的话,就会释放一行的内存
        print(line)

    二、将excel文件转换为csv文件,并更改其中的数据:

    转化为csv文件:

    import pandas as pd
    def xlsx_to_csv_pd():
        data_xls = pd.read_excel('Python成绩.xlsx', index_col=0)
        data_xls.to_csv('1.csv', encoding='utf-8')
    if __name__ == '__main__':
        xlsx_to_csv_pd()
    import pandas as pd
    def xlsx_to_csv_pd():
        data_xls = pd.read_excel('Python成绩登记信计.xlsx', index_col=0)
        data_xls.to_csv('2.csv', encoding='utf-8')
    if __name__ == '__main__':
        xlsx_to_csv_pd()

    更改其中数据:

    fo=open("1.csv",'r')
    ls=[]
    for line in fo:
        line = line.replace('
    ','').replace('优秀','90').replace('良好','80').replace('合格','60')
        ls = line.split(',')
        lns=''
        for s in ls:
            lns+="{}	".format(s)
        print(lns)
    fo=open("2.csv",'r',encoding='utf-8')
    ls=[]
    for line in fo:
        line = line.replace('
    ','').replace('优秀','90').replace('良好','80').replace('不合格','0')
        line = line.replace('合格','60')
        ls = line.split(',')
        lns=''
        for s in ls:
            lns+="{}	".format(s)
        print(lns)

    效果如图:

     三、将 csv 文件转换为 html 文件

    seg1 = '''
    <!DOCTYPE HTML>
    <html>
    <body>
    <meta charset=gb2312>
    <h2 align=center>Python成绩登记信计</h2>
    <table border='1' align="center" width=70%>
    <tr bgcolor='orange'>
    '''
    seg2 = "</tr>
    "
    seg3 = "</table>
    </body>
    </html>"
    def fill_data(locls):
        seg = '<tr><td align="center">{}</td><td align="center">{}</td><td align="center">{}</td><td align="center">{}</td></tr>
    '.format(*locls)
        return seg
    fr = open("2.csv", "r",encoding='utf-8')
    ls = []
    for line in fr:
        line = line.replace("
    ","")
        ls.append(line.split(","))
    fr.close()
    fw = open("Python成绩登记信计.html", "w")
    fw.write(seg1)
    fw.write('<th width="25%">{}</th>
    <th width="25%">{}</th>
    <th width="25%">{}</th>
    <th width="25%">{}</th>
    '.format(*ls[0]))
    fw.write(seg2)
    for i in range(len(ls)-1):
        fw.write(fill_data(ls[i+1]))
    fw.write(seg3)
    fw.close()

    运行程序后:

    四、将 csv 文件用网页表示

    def fill_data(excel, length=4):
        text = '<tr>'
        for i in range(length):
            tmp = '<td align="center">{}</td>'.format(excel[i+1])
            text += tmp
        text += "</tr>
    "
        return text
    
    def GetCsv(csvFile):

    ls = [] csv = open(csvFile, 'r', encoding="utf-8") for line in csv: line = line.replace(' ', '') ls.append(line.split(',')) return ls def CsvToHtml(csvFile, thNum): csv_list = GetCsv(csvFile) # 获得csv文件数据 print("Content-type:text/html ") print(''' <!DOCTYPE HTML> <html> <body> <meta charset=gbk2313> <h1 align=center>Python成绩表</h2> <table border='blue'> ''') # 写html文件首部 for i in range(1, thNum+1): # 写表格的表头(即第1行) print('<th width="20%">{}</th>'.format(csv_list[0][i])) print("</tr> ") for i in range(1, len(csv_list)): # 写表格的数据,从第2行开始为数据 print(fill_data(csv_list[i], 5)) print("</table> </body> </html>") # 写html文件尾部 CsvToHtml("1.csv", 5)

     结果为:

  • 相关阅读:
    "密码最短长度为7,其中必须包含以下非字母数字字符1"解决方法 (转)
    关于数据绑定的一个小小的总结:绑定数据到List类型的控件(RadioButtonList,ListBox等),双重绑定。
    转:从玩具到游戏 看另类项目激励机制
    [系列文章]上传文件管理控件之v1
    [系列文章]上传文件管理控件v3
    解决“此版本的 SQL Server 不支持用户实例登录标志。该连接将关闭”问题,完整综合版。
    Crystal Reports基本语法
    Crystal Reports图表(上)
    Crystal Reports第一张报表
    Crystal Reports中的字段
  • 原文地址:https://www.cnblogs.com/guangshixiaoshuaiqiang/p/10771618.html
Copyright © 2011-2022 走看看