Python学习笔记

2021-05-21PythonMOOC深圳信息文件操作

2021-05-21  本文已影响0人  爱生活的越仔

Python文件操作

写文本文件

案例:学生信息存储到文件

# -*- coding: utf-8 -*-
def getStudent(i):
    print("输入第",i,'个学生信息')
    try:
        Name=input('姓名:')
        if Name.strip()=='':
            raise Exception('无效的姓名')
        Gender=input('性别')
        if Gender!='男' and Gender!='女':
            raise Exception('无效的性别')
        Age=float(input('输入年龄'))
        if Age<=0 or Age>100:
            raise Exception('无效的年龄')
        s={}
        s['Name']=Name
        s['Gender']=Gender
        s['Age']=Age
        return s
    except Exception as e:
        print(e)
        return None

if __name__=='__main__':
    i=1
    try:
        with open('students.txt','wt') as file:
            while True:
                s=getStudent(i)
                if s:
                    file.write(s['Name']+'\n'+s['Gender']+'\n'+str(s['Age'])+'\n')
                i+=1
                s=input("输入吗,Y or N?")
                if s!='Y' and s!='y':
                    break

    except Exception as e:
        print(e)

6.2 读文本文件

案例:从文件读出学生信息

# -*- coding: utf-8 -*-
class Student:
    def __init__(self,n,g,a):
        self.name=n
        self.gender=g
        self.age=a

    def show(self):
        print(self.name,self.gender,self.age)
students=[]
try:
    with open('students.txt','rt') as file:
        while True:
            name=file.readline().strip('\n')
            if name=='':
                break
            else:
                gender=file.readline().strip('\n')
                age=float(file.readline().strip('\n'))
                s=Student(name,gender,age)
                students.append(s)
        for i in students:
            i.show()
except Exception as e:
    print(e)

6.3 文件编码

案例:UTF-8 文件编码

def writeFile():
 fobj = open("c:\\abc.txt", "wt",encoding="utf-8")
 fobj.write("abc 我们")
 fobj.close()
def readFile():
 fobj = open("c:\\abc.txt", "rt")
 rows=fobj.readlines()
 for row in rows:
 print(row)
try:
 writeFile()
 readFile()
except Exception as err:
 print(err)

6.4 文件指针

案例:调整文件指针读写文件

def writeFile():
    fobj = open("c:\\abc.txt", "wt+")
    print(fobj.tell())
    fobj.write("123")
    print(fobj.tell())
    fobj.seek(2, 0)
    print(fobj.tell())
    fobj.write("abc")
    print(fobj.tell())
    fobj.close()

def readFile():
    fobj = open("c:\\abc.txt", "rt+")
    fobj.write("我们")
    fobj.seek(0, 0)
    rows = fobj.read()
    print(rows)
    fobj.close()

try:
    writeFile()
    readFile()
except Exception as err:
    print(err)

6.5 二进制文件

# -*- coding: utf-8 -*-
#两种方式写入文件,分别是二进制和文本
def writeFileA():
    with open('A.txt','wb') as file:
        file.write('abc我们'.encode('utf-8'))
def writeFileB():
    with open('B.txt','wt',encoding='utf-8') as file:
        file.write('abc我们')
def readFile(fileName):
    with open(fileName,'rb') as fout:
        data=fout.read()
        for i in range(len(data)):
            print(hex(data[i]),end=' ')
    print()
#两种方式读取文件,分别是二进制和文本
def readFileA():
    with open('A.txt','rb') as file:
        fileA=file.read().decode('utf-8')
    print(fileA)

def readFileB():
    with open('A.txt','rt',encoding='utf-8') as file:
        fileB=file.read()
    print(fileB)
try:
    writeFileA()
    writeFileB()
    #循环读取
    readFile('A.txt')
    readFile('B.txt')

    readFileA()
    readFileB()
except Exception as e:
    print(e)

6.6 实践项目 教材记录管理

image.png

本章课后测试题目

执行后test.txt文件字节数大小:

# -*- coding: utf-8 -*-
import os
def save():
    f = open("test.txt", "wt", encoding="gbk")
    f.write("我abc\nxyz")
    f.close()
save()
print(os.path.getsize('test.txt'))

在utf-8编码下,和gbk不一样

# -*- coding: utf-8 -*-
import os
def save():
    f=open("test.txt","wt",encoding="utf-8")
    f.write("我abc\nxyz")
    f.close()

save()
print(os.path.getsize('test.txt'))
def save():

    f=open("test.txt","wt")

    f.write("abc\nxyz")

    f.close()

def read():

    f=open("test.txt","rt")

    s=f.readline()

    print(len(s))

    f.close()

save()

read()
def save(s):
    f = open("test.txt", "wt")
    f.write(s["name"] + "\n")
    f.write(s["sex"] + "\n")
    f.write(s["age"] + "\n")
    f.close()

def read():
    f = open("test.txt", "rt")
    name = f.readline().strip("\n")
    sex = f.readline().strip("\n")
    age = f.readline().strip("\n")
    print(name)
    print(sex)
    print(age)
    f.close()

s = {"name": "xxx", "sex": "male", "age": "20"}
save(s)
read()



上一篇 下一篇

猜你喜欢

热点阅读