学习笔记☞python 基础☞文件 ☞python3

文件:

    什么是文件
        文件是用于数据存储的单位
        文件通常用来长期存储设置
        文件中的数据已字节为单位进行顺序存储的
长期存储介质:
    磁盘 硬盘 U盘
内存的读写速度快  磁盘的读写速度慢
文件的操作步骤:
    打开文件
    读写文件
    关闭文件
文件的打开函数open
    open(file, mode='rt')     
        用于打开一个文件,返回此文件流对象,如果打开失败会触发IOError错误
文件的关闭方法
    F.close()    关闭文件,释放系统资源

示例:
# 此程序示意文件的打开和关闭
try:
    file=open(r'C:\Users\Administrator\Desktop\aaa.txt')
    print('打开文件成功')

    s = file.readline()
    print(s)

    # 关闭文件
    file.close()
    print('文件已关闭')

except IOError:
    print('打开文件失败')

with open(r'C:\Users\Administrator\Desktop\aaa.txt') as f:
    print(f.read())

文件操作分为两种类型的操作:

    文本文件的操作
    二进制文件的操作
    
文本文件模式:
    mode='t'
    1、默认文件中存储的内容为字符数据,以行为单位进行读取,采用系统默认的换行符进行分隔
    2、对于文本文件的读写,需要用字符串(str) 进行读取和写入数据
各操作系统默认的换行符:
    Linux 换行符 '\n'
    Windows 换行符 ‘\r\n'
    旧的Macintosh 的换行符'\r'
    新的Mac OS 换行符 '\n'
        
练习:
    1、写一个程序,读入任意行的文字信息,当输入空时结束输入
    将读入的字符串存于列表中,然后将列表里的内容写入文件input.txt中
def input_():
    L = []
    while True:
        s = input('请输入:')
        if not s:
            break
        L.append(s)
    return L


def txt(L):
    try:
        f = open('input.txt', 'w')
        for i in L:
            f.write(i + '\n')
        f.close()
        print('文件写入完成')
    except:
        print('打开文件失败')


def main():
    L = input_()
    txt(L)


if __name__ == '__main__':
    main()
    2、写一个程序从input.txt中读取之前输入的数据,存入列表中,再加上行号进行打印显示
    显示格式如下:
        第1行:zzzzzzzz
        第2行:wwwwwww
def read_input_file(filenaem='input.txt'):
    try:
        f = open(filenaem)
        L = []
        while True:
            read_ = f.readline()
            if not read_:
                break
            L.append(read_.rstrip())

        f.close()
        return L

    except IOError as e:
        print('打开文件失败', e)


def print_(L):
    for i in enumerate(L, 1):
        print('第%d行:%s' % i)


def main():
    L = read_input_file()
    print_(L)


if __name__ == '__main__':
    main()
二进制文件操作
    打开模式:'b'    # open('xxx', 'b')
    默认文件中存储的都是以字节为单位的二进制数据,通常有认为规定的格式,需要以字节为单位进行读写
    对二进制文件的读写,需要用字节串(bytes) 进行操作
    
F.read(n)方法
F.readline()
F.readlines()
    对于二进制文件,F.read() / F.readline() 返回字节串
    F.readlines() 返回字节串列表
    F.read(n)  n代表最大字节数
F.write(x) 方法
    对于二进制文件,x必须为字节串
#aaa.txt内容:
百 度
新 浪
微 博
腾 讯
网 易


# 此示例示意二进制模式读取mynote.py文件
try:
    f = open ('aaa.txt','rb')
    print('打开文件成功')
    b=f.read()
    print('字节串:',b)
    print('转码后',b.decode('utf-8'))
    f.close()
except IOError as e:
    print('打开文件失败',e)

# 此程序示意以二进制方式打开文件后进行写操作
f = open('mydata.bin', 'wb')  # <<< 'wb'二进制写模式
print('文件打开成功')
f.write(b'hel\nlo')  # 写入五个字符
s = '我是汉字'
r = f.write(s.encode('utf-8'))  # 将中文字符串转为字节串      r: 二进制方式打开返回字节数,以文本方式打开返回字符数
print('写入:', s, ',共写入', r, '个字节')
f.close()


# number.bin内容
ABCDE12345abcde67890

# 此示例示意tell方法的用法
f = open('number.bin', 'rb')  # 二进制方式打开
print('刚打开时的文件流位置为:', f.tell())
b = f.read(5)
print('读出五个字节后文件流位置为:', f.tell())
f.close()

F.seek(offset, whence=0) 函数
    offset 偏移量:
        大于0的数代表向文件末尾方向移动
        小于0的数代表向文件头方向移动
    whence 相对位置
        0 代表从文件头开始偏移
        1 代表从当前位置开始偏移
        2 代表从文件尾开始偏移
示例:
# 此示例示意seek方法的用法
# number.bin 内容为:
# ABCDE12345abcde67890


f = open('number.bin', 'rb')
f.read(5)
# f.seek(10, 0) #从文件头向后10个
f.seek(-10, 2)  # 从文件尾向前10个
# f.seek(5, 1)  #当前向后5个
b = f.read(5)
print(b)
f.close()

汉字编码:
    国标系列:
        GB18030 (2子节或4字节编码,共27533个)
            GBK (2字节编码,共21003个)
                GB2312  (2字节编码,共6763个)
        (常用于Windows)
    国际标准:
        UNICODE16/UNICODE32 <<<---->>>  UTF-8
        (常用于Linux / Mac OS X / IOS / Android)
        UTF-8(8-bit Unicode Transformation Format)
编码字符串:
    'gb2312'
    'gbk'
    'gb18030'
    'utf-8'
    'ascii'
用于encode 和 decode 方法中

编码注释:
    在源文件的第一行或第二行写入如下格式的内容:
    # -*- coding:gbk _*_
    或
    #  -*- coding:utf-8 _*_
    是告诉python3解释执行器当前文件的编码是什么

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值