【python入门】day18:文件、os相关操作

2024-01-10 01:58:00

编码格式

在这里插入图片描述
1、ASCLL–ISO8859-1–GBK–UTF-8–
ISO8859-1–GBK等文件在格式上会显示为ASCLL
2、python文件默认格式 utf-8,看格式流程
选择python文件–用记事本打开–另存为… 这时可看到该文件的格式
3、修改python文件默认编码格式,在文件开头添加上:
#encoding=gbk

#常见的字符编码格式
'''
python的解释器使用的是Unicode(内存)
.py文件在磁盘上使用的是UTF-8储存(外存)(默认格式UTF-8)
修改python文件的编码格式  在文件顶部加上encoding=格式类型(如GBK)
'''

文件读写的原理_读取磁盘文件中的内容

从文件中将数据拿出为读
从内存往出拿数据为写
在这里插入图片描述

#文件的读写原理
''''
文件的读写简称"IO"操作(IO:input output)
读写流程:python操作文件-->打开或新建文件-->读写文件-->关闭资源
操作原理:.py文件-->解释器-->os-->操作-->硬盘
'''

在这里插入图片描述

#文件的读写操作
'''
内置函数open()创建文件对象
语法规则:file=open(filename [,mode,encoding])
       file:被创建的文件对象
       open:创建文件对象的函数
       filename:要创建或打开文件的名称
       mode:打开模式默认为只读
       encoding:默认文本文件中字符的编写格式为GBK
     
'''
file=open('a.txt','r')#r表示读取
print(file.readlines())# readlines的结果是列表
file.close()
file = open('a.txt','r','utf-8')
print(file.readlines())		#readlines读取到一行进行显示
file.close()

常用的文件打开模式

在这里插入图片描述
在这里插入图片描述
Q: 为什么要用二进制读写的方式来完成复制,还有其他方法可以实现文件的copy吗
A: 在 Python 中使用二进制读写的方式来完成文件复制通常是因为这种方式能够保留原始文件的完整内容,包括其中的二进制数据。对于非文本文件(如图像、音频、视频等),使用二进制模式可以确保文件复制的准确性。

还可以使用 shutil 模块
shutil 是 Python 的标准库之一,提供了一些高级的文件操作功能,包括文件复制。你可以使用 shutil.copy() 函数来实现文件复制。

import shutil

source_file = 'source.txt'
target_file = 'target.txt'

shutil.copy(source_file, target_file)
#常用文件的打开摸式
'''
文件类型:按文件中的数据的组织形式分为两大类
文本文件:储存的是普通的‘字符’文本,默认为Unicode字符集,可以使用记事本程序打开
二进制文件:把数据内容用‘字节’形式进行储存,无法用记事本打开,必须使用准用的软件打开,如MP3等
打开模式     描述
    r   以只读模式打开文件,文件的指针放在文件的开头
    w   以只写模式打开文件,如果文件不存在则创建,如果文件存在,则覆盖原有内容,文件指针在文件开头
    a   以追加模式打开文件,如果文件不存在则创建,文件的指针放在文件的开头,如果文件存在,则在源文件末尾添加内容,文件指针在文件末尾
    b   以二进制模式打开文件,不能单独使用,需要与其它模式使用,rb或wb
    +   以读写方式打开文件,不能单独使用,需要与其它模式使用,a+
'''
file=open('b.txt','w')#w表示写入
print(file.write('hello'))#
file.close()

文件对象的常用方法

在这里插入图片描述

#读写文件
src_file=open('maomi.jpeg','rb')
target_file=open('copymaomi.jpeg','wb')
target_file.write(src_file.read())
src_file.close()
target_file.close()
#读
file=open('a.txt','r')
#print(file.read())#在括号中输入数字几,表示读取几个个字符
#print(file.readline())
print(file.readlines())
#写
file=open('b.txt','a')
#file.write('你好')
lst=['python','world','hahah']
file.writelines(lst)
file.close()
#移动指针位置
file=open('b.txt','r')
file.seek(2)
print(file.read())
file.close()
#缓冲和关闭程序(close必须在flush前否则会报错)
file=open('b.txt','w')
file.write('李四')
file.flush()
file.write('重庆')
file.close()

读取文件内容:

with open('/path/to/file.txt', 'r') as file:
    content = file.read()
    print(content)

在上面的示例中,文件被以只读模式 ‘r’ 打开,并使用 file.read() 读取文件内容。with open 语句结束后,文件会自动关闭。

逐行读取文件内容:

with open('/path/to/file.txt', 'r') as file:
    for line in file:
        print(line)

上述示例中,文件被逐行读取并打印。

写入文件内容:

with open('/path/to/output.txt', 'w') as file:
    file.write('Hello, world!')

在上述示例中,文件以写入模式 ‘w’ 打开,并使用 file.write() 方法写入内容。如果文件不存在,则会创建一个新文件。如果文件已存在,则会清空其内容并写入新的内容。

追加到文件末尾:

with open('/path/to/output.txt', 'a') as file:
    file.write('Appending new content!')

上面的示例中,文件以追加模式 ‘a’ 打开,并使用 file.write() 方法追加内容到文件末尾。

无论是读取文件还是写入文件,使用 with open 可以确保在处理完文件后,文件会被正确关闭,从而避免资源泄露和其他问题。

WITH语句

在这里插入图片描述
在这里插入图片描述

#with语句(上下文管理器)
'''
with语句可以管理上下文资源,不轮什么原因跳出with块,都能确保文件正确的关闭,以次来达到释放资源的目的
with open(’文件名.文件扩展名‘,rd) as 别名:
with之后 as之前的称为上下文表达式(结果是上下文管理器)-->同时创建一个运行时上下文-->
自动调用_enter_()方法(实现了_enter_()和_exit_()方法)-->遵守了上下文管理协议
离开运行上下文时,自动调用上下文管理器的特殊方法_exit_()
'''
#ContentMgr实现的特殊方法__enter__()和__exit__()就称该类为类对象,遵守了上下文管理器协议
#  该类对象的实例额对象就成为上下文管理器
class ContentMgr():
    def __enter__(self):
        print('enter方法被调用了')
        return self
    def __exit__(self, exc_type, exc_val, exc_tb):
        print('exit方法被调用了')
    def show(self):#实例对象
        print('show方法被调用了')

with ContentMgr() as file:
    file.show()

os模块常用函数

getcwd()返回当前的工作目录
listdir(path)返回指定路径下的文件和目录信息
mkdir(path [,mode])创建目录
makedirs(path1/path2…[,mode])创建多级目录
rmdir(path)删除目录
removedirs(path1/path2…)删除多级目录
chdir(path)将path设置为当前工作目录
在这里插入图片描述

#目录表操作
'''
OS模块是python内置的操作系统功能和文件系统相关的模块,该模块中的语句执行结果通常与操作系统有关,
在不同的操作系统上云行,得到的结果可能不一样
OS模块与OS.path模块用于对目录或文件进行操作
'''
#OS模块
import os
#os.system('notepad.exe')#调用命令打开记事本
#os.system('calc.exe')#调用命令打开计算器
#os.startfile('C:\\ProgramData\\Microsoft\\Windows\\Start Menu\\Programs\\微信\\微信.lnk')
# #打开文件 查看文件路径,将路径粘贴在代码语句中

#OS模块操作目录相关函数
'''
getcwd():返回当前工作目录
listdir(path):返回指定路径下的文件和目录信息
mkdir(path,[mode]):创建目录
makedirs(path1,path2...,[mode]):创建多级目录
rmdir(path):删除目录
removedirs(path1,path2.。。。):删除多级目录
chdir(path):将path这是为当前工作目录
abspath(path):用于获取当前文件或目录的绝对路径
esists(path):用于判断文件或目录是存在,如果存在返回true,不存在返回false
join(path,name)将目录与目录或文件名连接起来
split(path):将目录与文件进行分离
splitext():分类文件和扩展名
basename(path)从一个目录中提取文件名
dirname(path)从一个文件中提取文件路径,不含文件名
isdir(path)用于判断是否为路径
'''

os.path模块的常用方法_课堂案例

import os
#getcwd():返回当前工作目录
print(os.getcwd())#查看当强工作目录的路径

#listdir(path):返回指定路径下的问价和目录信息  办公自动化的时候经常会用
lst=os.listdir('../Python_课件笔记')
print(lst)

#mkdir(path,[mode]):创建目录
#os.mkdir('newdir新建目录')

#makedirs(path1,path2...,[mode]):创建多级目录
#os.makedirs('新建目录2/A/B')

#rmdir(path):删除目录
#os.rmdir('newdir')

#removedirs(path1,path2.。。。):删除多级目录
#os.removedirs('新建目录2/A/B')

#abspath(path):用于获取当前文件或目录的绝对路径
import os.path
print(os.path.abspath('数据类型.py'))

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

#os模块的walk方法
import os
path1=os.getcwd()
lst_file=os.walk(path1)
for dirpath,dirname,filename in lst_file:
   '''print(dirpath)
    print(dirname)
    print(filename)
    print('--------------')'''
   for dir in dirname:
     print(os.path.join(dirpath,dir))
   for file in filename:
      print(os.path.join(dirpath,file))

文章来源:https://blog.csdn.net/gyf200708/article/details/135395488
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。