python对文件的读写

文件 File
什么是文件
文件是用于数据存储和单位
文件通常用来长期存储数据
文件中的数据是以字节为单位进行顺序存储的

 

文件的操作流程:
1. 打开文件
2. 读/写文件
3. 关闭文件
注:
任何的操作系统,一个应用程序同时打开文件的数量有最大数限制

文件的打开函数
open(file, mode='rt/wt') 用于打开一个文件,返回此文件流对象,如果打开文件失败,则会触发OSError错误

对文件的读/写:

文件的关闭方法:
F.close() # 关闭文件,释放系统资源


文本文件操作
操作模式:
't'
说明:
  1. 默认文件中存储的都为字符数据,在读写过程中会自动进行编解码操作,
  2. 文本文件以行为单位进行分隔,在python内部统一用'\n'作用为换行符进行分隔
  3. 对文本文件的读写操作需要用字符串(str) 进行数据操作

各操作系统的换行符
Linux换行符: '\n'
Windows 换行符: '\r\n'
新的Mac OS 换行符: '\n'
旧的Macintosh换行符: '\r'(已不用了)

这是对文件的读示例:

zengsf.txt内容:
张三 20 100
李四 21 96
小王 20 98
~          


def read_info_txt():
    dic = []
    try:
        f = open("zengsf.txt")
        lines = f.readlines()       #一次性读取文件的所有数据,然后用for循环来进行遍历
        for x in lines:
            l = x.split(" ")
            dic.append({"name":l[0],"age":int(l[1]),"score":int(l[2])})
            print("%s今年%d岁,成绩是:%d"%(l[0],int(l[1]),int(l[2])))
        f.close()
        return dic
    except:
        print("文件打开失败")

def print_info(L): 
    for d in L:
        print(d["name"],"今年",d["age"],"岁,成绩是:",d["score"])


L = read_info_txt()
print(L)
print_info(L)

打印结果:
tarena@tedu:~/zengsf$ python3 exercise822.py
张三今年20岁,成绩是:100
李四今年21岁,成绩是:96
小王今年20岁,成绩是:98
[{'name': '张三', 'score': 100, 'age': 20}, {'name': '李四', 'score': 96, 'age': 21}, {'name': '小王', 'score': 98, 'age': 20}]
张三 今年 20 岁,成绩是: 100
李四 今年 21 岁,成绩是: 96
小王 今年 20 岁,成绩是: 98

对文件的读写示例:


文本文件的写方法:
模式字符串:"w"/"x"/"a"
F.write(字符串)
F.writelines(字符串列表)

 

def input_data():
    l = []
    while True:
        x = input("请输入你要存入的数据:")
        if x == "":
            break
        l.append(x)
    return l                                     #将键盘输入的数据存在列表中


#f = open("input.txt","rt")

def write_data(l):
    try:
        f = open("input.txt", "w")               #创建或打开文件进行写操作
        for i in l:                              #循环遍历列表并将数据写入文件中
            f.write(i)
            f.write("\n")
        f.close
    except OSError:
        print("存入数据失败")
                                                             
write_data(input_data())



def read_data():
    l = []
    try:
        f = open("input.txt", "rt")              #读取刚刚写入的数据
        lines = f.readlines()
        for line in lines:
            s = line.rstrip("\n")
            l.append(s)
        print("读取文件成功")
        return l
    except OSError:
        print("文件打开失败")

def print_text(lst):
    for line_number ,s in enumerate(lst, 1):    #利用到了迭代器中的枚举方法
        print(line_number, ":", s)

if __name__ == '__main__':
    print_text(read_data())

输出结果:
                                         
tarena@tedu:~/zengsf$ python3 exercise822.py
请输入你要存入的数据:zengsf
请输入你要存入的数据:shaofeng
请输入你要存入的数据:fengshao
请输入你要存入的数据:
读取文件成功
1 : zengsf
2 : shaofeng
3 : fengshao

 

posted on 2018-08-22 22:18  zengsf  阅读(228)  评论(0编辑  收藏  举报

导航