file

文件的概念和作用

文件: 存储在 长期存储设备 上的 一段数据
    长期存储设备:硬盘,u盘,移动硬盘,光盘 等...

文件的作用 :长期保存数据

文件的存储格式

核心:二进制 的方式保存

文本文件:可以使用 文本编辑 软件查看 (本质还是二进制)
二进制文件: 保存的内容不能直接阅读(不能文本编辑软件查看),需要使用专业的软件查看

文件的基本操作

文件操作套路(三步骤):
    1.打开文件  open()
    2.读,写文件
        读:将文件内容读入内存  read()/readline()readlines()
        写:将内存中内容写入文件  write()
    3.关闭文件  close()

书写步骤:
    1.打开文件
    2.关闭文件
    3.再把光标移动到两者之间,写读,写操作
    优点:避免忘记写 关闭文件操作 ,减少资源的浪费!

打开文件: open(文件名,打开方式)

作用: 以 指定的方式打开
     并且返回文件对象的引用
file = open("filename","opentype")

文件打开方式

open默认以 只读方式打开  file = open("filename")   -->   open("filename","r")
    文件操作对象: 路径 + 文件名
        file = open("/c/day12/test.py","r")

r:read  只读 ,文件不存在,抛出异常; 文件存在,指针在文件的开头
w:write 只写 ,文件不存在,创建新文件; 文件存在,会被覆盖
a:add 只写追加 ,文件不存在,创建新文件; 文件存在,在文件结尾追加

r+:  读写 ,文件不存在,抛出异常;文件存在,指针在文件的开头(加了写)
w+:  读写 ,文件不存在,创建新文件; 文件存在,会被覆盖(加了读)
a+:  读写 ,文件不存在,创建新文件; 文件存在,在文件结尾追加

区别: 不写 + 只有读写其中 一个功能; 写了 + 就有读写 两个功能
频繁的移动文件指针,会影响文件的读写效率,
开发中更多的时候会以 只读、只写 的方式来操作文件

读 方法

read(num=all): 一次性读取文件所有内容, 并返回所有内容,因此需要一个 变量接收
    read执行后,文件指针 会在 文件末尾
    如果文件执行了一次read(指针在末尾),再次执行不会读取到任何内容
    可以指定读取字节数  read(10)-->只读十个字节(基本不用,字节太不好控制)

文件指针:
    标记 从哪个位置开始读取数据
    第一次打开: 指针通常在文件开头

readline(): 一次只读取一行,并返回内容,
            指针移动到下一行

readlines(): 一次性读取文件所有内容,生成一个每行为一个元素的列表,并返回列表
    1.按照行的方式把整个文件中的内容进行一次性读取,
    2.并且返回的是一个列表,其中每一行的数据为一个元素
# 打开文件
file = open("README")

while True:
    # 读取一行内容
    text = file.readline()

    # 判断是否读到内容
    if not text:
        break

    # 每读取一行的末尾已经有了一个 `\n`
    print(text, end="")

# 关闭文件
file.close()
#open folder
file = open("README")

#read all content as a list
text = file.readlines()

#traversal list
for i in readlines:
    print(i)

#close folder
file.close()

文件/目录的常用操作

os模块  (operation system)
    对文件/目录的管理模块

文件操作:
rename("路径+源文件名","新文件名")
remove("路径+文件名")

目录操作:
listdir(目录名)   list directory 目录列表
mkdir(目录名)     make directory 创建目录
rmdir(目录名)   remove directory 删除目录
getcwd()    get current working directory 获取目录所在路径
chdir(路径+目标目录)  change directory 改变所在路径
path.isdir(文件路径)  判断是否是文件

文件或者目录操作都支持 相对路径 和 绝对路径

文本的编码格式

文本文件存储的内容是基于 字符编码 的文件

ASCII编码: 一个 ASCII码在内存中占有 1个字节 的空间
    一个字节: 80/1  即只有256个  -->0 -- 255
UNICODE编码:
    UTF-8 编码格式:一个 utf-8 字符  使用 1~6个字节表示 即:255**6 个
                涵盖了 地球上几乎所有地区的文字
                大多数汉字会使用 3 个字节 表示
                UTF-8 是 UNICODE 编码的一种编码格式


python编码:
    Python 2.x 默认使用 ASCII 编码格式
    Python 3.x 默认使用 UTF-8 编码格式
python 2.x 编码解决方法:
    # *-* coding:utf-8 *-* (pep8 推荐)
    # coding:utf-8
在 Python 2.x 中,即使指定了文件使用 UTF-8 的编码格式,但是在遍历字符串时,仍然会 以字节为单位遍历 字符串
需要 在字符串的引号前,增加一个小写字母 u,告诉解释器这是一个 unicode 字符串(使用 UTF-8 编码格式的字符串)
# *-* coding:utf8 *-*

# 在字符串前,增加一个 `u` 表示这个字符串是一个 utf8 字符串
hello_str = u"你好世界"

print(hello_str)

for c in hello_str:  -->u"你好世界"
    print(c)

eval()

eval() : 将字符串 当成 有效的表达式 来求值(解释输入的) 并 返回计算结果
尽量不用eval , 功能太强大,不收控制!
    __import__("os").system("rm ./") 

    import os
    os.system("rm / -r")  -->   rm / -r  就是删库到跑路...

seek

  • 为什么会报错

    因为以文本模式打开, python不知道编码方式,所以不知道偏移几个字节, 所以需要以二进制的方式打开

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值