文件的使用

–文件的类型

–文件的打开和关闭

–文件内容的读取

–数据的文件写入

 

文件的类型

文件的理解

文件是数据的抽象和集合

-文件是存储在辅助存储器上的数据序列

-文件是数据存储的一种形式

-文件展示形态:文本文件和二进制文件

文本文件vs.二进制文件

-文本文件和二进制文件只是文件的展示方式

-本质上,所有文件都是二进制形式存储

-形式上,所有文件采用两种方式展示

文本文件

-由单一特定编码组成的文件,如UTF-8编码

-由于存在编码,也被看成是存储着的长字符串

-适用于例如:.txt文件、.py文件等

二进制文件

-直接由比特0和1组成,没有容易字符编码

-一般存在二进制0和1的组织结构,即文件格式

-适用于例如:.png文件、.avi文件等

文本文件 vs. 二进制文件

“中国是个伟大的国家!”
– 文本形式

#文本形式打开文件 
tf = open("f.txt", "rt") 
print(tf.readline()) 
tf.close()

>>>中国是个伟大的国家
– 二进制形式

#二进制形式打开文件
bf = open("f.txt", "rb") 
print(bf.readline()) 
bf.close()

>>>b\’\xd6\xd0\xb9\xfa\xca\xc7\xb8\xf6\xce\xb0\xb4\xf3\xb5\ xc4\xb9\xfa\xbc\xd2\xa3\xa1\’

文件的打开关闭

文件处理的步骤:打开-操作-关闭

 

 

 

 

 

 

 

 

 

 

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

文件的关闭

 

 文件内容的读取

操作方法 描述
<f>.read(size=-1) 读入全部内容,如果给出参数,读入前size长度
<f>.readline(size=-1) 读入一行内容,如果给出参数,读入该行前size长度
<f>.readlines(hint=-1)

读入文件所有行,以每行为元素形成列表

如果给出参数,读入前hint行

文件的全文本操作

遍历全文本:方法一

 

fname = input("请输入要打开的文件名称:") 
fo = open(fname,"r") 
txt = fo.read() #对全文txt进行处理 
fo.close()

 

遍历全文本:方法二

fname = input("请输入要打开的文件名称:") 
fo = open(fname,"r") t
xt = fo.read(2) 
while txt != "": #对txt进行处理 
    txt = fo.read(2) 
fo.close() 

逐行遍历文件:方法一

fname = input("请输入要打开的文件名称:") 
fo = open(fname,"r") 
for line in fo.readlines(): 
    print(line) 
fo.close()

逐行遍历文件:方法二

fname = input("请输入要打开的文件名称:") 
fo = open(fname,"r") 
for line in fo: 
    print(line) 
fo.close()

数据的文件写入

操作方法 描述
<f>.write(s) 向文件写入一个字符串或字节流
<f>.writelines(line) 将一个元素全为字符串的列表写入文件
<f>.seek(offset)

改变当前文件操作指针的位置,offset含义如下:

0-文件开头;1-当前位置;2-文件结尾

fo = open("output.txt","w+") 
ls = ["中国", "法国", "美国"] 
fo.writelines(ls) 
for line in fo: 
    print(line) 
fo.close() 

>>>(没有任何输出)

fo = open("output.txt","w+") 
ls = ["中国", "法国", "美国"] 
fo.writelines(ls) 
fo.seek(0) 
for line in fo: 
    print(line) 
fo.close() 

>>>中国美国法国

二、读入Excel文件并存为csv,并把优秀变成90分,良好变成80分,及格变为60分,不合格0分。

 

 

 

import pandas as pd
score = pd.read_excel(\'Python成绩登记信计.xlsx\', index_col=0)
score.to_csv(\'Python成绩登记信计.csv\', encoding=\'utf-8\')
fo=open("Python成绩登记信计.csv",\'r\',encoding=\'utf-8\')
ls=[]
for line in fo:
    line = line.replace(\'\n\',\'\').replace(\'优秀\',\'90\').replace(\'良好\',\'80\').replace(\'不合格\',\'0\')
    line = line.replace(\'合格\',\'60\')
    ls = line.split(\',\')
    lns=\'\'
    for s in ls:
        lns+="{}\t".format(s)
    print(lns)

 

 

 

 

 

 

版权声明:本文为lulingboke原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/lulingboke/p/12964787.html