我在CSDN学python-15

1、编码格式介绍

常见的字符编码格式

  • Python的解释器使用的是Unicode(内存)
  • .py文件在磁盘上使用UTF-8存储(外存)

GB-这些是中文的字符 

.py文件默认UTF-8,

修改编码格式:在程序最上面加上以下代码,则文件格式变为 ANSI

# encoding = gbk

2、文件的读写原理

  • 文件读写操作-“I/O操作”
  • 文件读写操作流程                                                                                          
  • 操作原理                                                                             

3、文件读写操作

  • 内置函数open()创建文件对象
  • 语法规则

操作方法:

1、建立a.txt文本文档,用记事本打开,另存为ANSI格式。a.txt内容如下:

中国
美丽

2、在PyCharm中打开a.txt文件,出现乱码,转为GBK文件

3、在.py文件中输入以下程序,即可在python中读取文件

# Name:      Python study
# Designer:  MilesHugh
# Time:      2023/4/14  15:40

print('你好,中国')

# file = open(filename[,mode,encoding])
file = open('a.txt', 'r')   # 创建磁盘中的文件在python中的对象
print(file.readlines())  # 读取列表,将所有行的东西放在一行列表中
file.close()    # 关闭系统资源

4、常用的文件打开模式

文件类型——按照文件中数据的组织形式可以分为:

  • 文本文件:存储的是普通“字符”文本,默认为Unicode字符集,可以用记事本程序打开
  • 二进制文件:把数据内容用“字节”进行存储,无法用记事本打开,必须用专用的软件打开。如mp3音频文件、jpg图片、doc文档等
打开模式描述
r以只读模式打开文件,文件的指针将会放在文件的开头
w以只写模式打开文件,如果文件不存在则创建,如果文件存在,则覆盖原有内容,文件指针在文件的开头
a以追加模式打开文件,如果文件不存在则创建,文件指针在文件开头,如果文件存在,则在文件末尾追加内容,文件指针在原文件末尾
b以二进制方式打开文件,不能单独使用,需要与其他模式一起使用,rb或wb
+以读写方式打开文件,不能单独使用,需要与其他模式一起使用,a+

文件操作:

# Name:      Python study
# Designer:  MilesHugh
# Time:      2023/4/14  16:12

# 文件写操作
file = open('b.txt', 'w')
# file.write('hello world')
file.write('python')
file.close()

# 文件追加操作
file = open('b.txt', 'a')
file.write('python')
file.close()

图片拷贝操作:

# Name:      Python study
# Designer:  MilesHugh
# Time:      2023/4/14  16:15

# 图片拷贝操作
src_file = open('py.png', 'rb')
target_file = open('copy_py.png', 'wb')
target_file.write(src_file.read())
target_file.close()
src_file.close()

5、文件对象常用的方法

方法名说明
read([size])从文件中读取size个字节或字符的内容返回。若省略[size],则读取到文件末尾,即一次读取文件所有内容
readline()从文本文件中读取一行内容
readlines()把文本文件中每一行都作为独立的字符串对象,并将这些对象放入列表返回
write(str)将字符串str内容写入文件
writelines(s_list)将字符串列表s_list写入文本文件,不添加换行符
seek(offset[,whence])

把文件指针移动到新的位置,offset表示相对于whence的位置:

offset:为正往结束方向移动,为负往开始方向移动

whence不同值代表不同含义:

0:从文件头开始计算(默认值)

1:从当前位置开始计算

2:从文件尾开始计算

tell()返回文件指针的当前位置
flush()把缓冲区的内容写入文件,但不关闭文件
close()把缓冲区的内容写入文件,同时关闭文件,释放文件对象相关资源

6、with语句(上下文管理器)

  • with语句可以自动管理上下文资源,不论什么原因跳出with块,都能确保文件正确的关闭,以此来达到释放资源的目的

 上下文管理器:

# Name:      Python study
# Designer:  MilesHugh
# Time:      2023/4/14  16:42

'''
MyContentMgr实现了特殊方法:__enter__()、__exit__(),则称为该类对象遵守了上下文管理器协议
该类对象的实例对象,称为上下文管理器
'''

class MyContentMgr(object):
    def __enter__(self):
        print('enter方法被调用实行了')
        return self
    def __exit__(self, exc_type, exc_val, exc_tb):
        print('exit方法被调用执行了')

    def show(self):
        print('show方法被调用执行了')

with MyContentMgr() as file:  # 相当于 file = MyContentMgr()
    file.show()

with语句的使用:

# Name:      Python study
# Designer:  MilesHugh
# Time:      2023/4/14  16:38

print(type(open('a.txt', 'r')))
with open('a.txt', 'r') as file:
    print(file.read())

# 利用with语句进行图像的拷贝
with open('py.png', 'rb') as src_file:
    with open('copy2_py.png', 'wb') as target_file:
        target_file.write(src_file.read())

6、目录操作

  • os模块是Python内置的与操作系统功能和文件系统相关的模块,该模块中的语句的执行结果通常与操作系统有关,在不同的操作系统上运行,得到的结果可能不一样。
  • os模块与os.path模块用于对目录或文件进行操作

os模块的操作:

# Name:      Python study
# Designer:  MilesHugh
# Time:      2023/4/14  16:53

# os模块与操作系统相关的一个模块
import os
os.system('notepad.exe')  # 打开记事本
os.system('calc.exe')  # 打开计算器
# 直接调用可执行文件
os.startfile('D:\\Tencent\\QQ\\Bin\\qq.exe')  # 打开应用程序QQ
os模块操作目录相关函数
函数说明
getcwd()返回当前的工作目录
listdir(path)返回指定路径下的文件和目录信息
mkdir(path[,mode])创建目录
makedirs(path1/path2...[,mode])创建多级目录
rmdir(path)删除目录
removedirs(path1/path2......)删除多级目录
chdir(path)将path设置为当前工作目录
# Name:      Python study
# Designer:  MilesHugh
# Time:      2023/4/14  17:07
import os
print(os.getcwd())

lst = os.listdir('../new')
print(lst)

# os.mkdir('new2')
os.makedirs('A/B/C')
os模块操作目录相关函数
函数说明
abspath(path)用于获取文件或目录的绝对路径
exists(path)用于判断文件或目录是否存在,如果存在返回True,否则返回False
join(path,name)将目录与目录或者文件名拼接起来
splitext分离文件名和扩展名
basename(path)从一个目录中提取文件名
dirname(path)从一个路径中提取文件路径,不包括文件名
isdir(path)用于判断是否为路径

实例1:列出指定目录下的所有py文件

# Name:      Python study
# Designer:  MilesHugh
# Time:      2023/4/14  17:15

# 列出指定目录下的所有py文件
import os
path = os.getcwd()
lst = os.listdir(path)
for filename in lst:
    if filename.endswith('.py'):
        print(filename)

实例2:遍历所有的目录文件

# Name:      Python study
# Designer:  MilesHugh
# Time:      2023/4/14  17:19

# 遍历所有的目录文件
import os
path = os.getcwd()
lst_files = os.walk(path)  # 可以建立指定目录下的所有文件目录
for dirpath, dirname, filename in lst_files:
    print(dirpath)
    print(dirname)
    print(filename)
    print('----------')
    for dir in dirname:
        print(os.path.join(dirpath, dir))
    print('---------')
    for file in filename:
        print(os.path.join(dirpath, dir))

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小翔很开心

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值