文件的读写笔记

文件的使用

一、文件的概述

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

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

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)

原文地址:https://www.cnblogs.com/xiayiLL/p/10783667.html