想学Python的工程师学习之文件操作

# 项目名称:关于文件的一些操作
# 程序实现目的:
# 开发时间: 2020/12/15 10:39

# 编码格式
# 常见的字符编码格式
# 1、Python的解释器使用的是Unicode(内存)
# 2、.py文件在磁盘上使用UTF-8存储(外存)
print('你好,中国') # 查看编码格式方法,使用记事本打开.py文件,另存为界面下方有显示编码格式
# 修改Python文件的编码格式,在最上方加: #encoding=gbk
# 不同的编码方式决定占用磁盘空间的大小

# 文件读写的原理
# 文件的读写俗称“IO操作”
# 文件的读写操作
# 内置函数open()创建文件对象
# 语法规则:file=open(filenamep,[mode,encoding])
# file为被创建的文件对象,filename要创建或打开的文件名称,mode打开模式默认为只读,encoding默认字符的编码格式为gbk
file=open('a.txt','r') # 'r'表示读的操作
print(file.readlines()) # readlines结果为一个列表
file.close()

# 常用的文件打开模式
file=open('b.txt','w')
file.write('helloworld')
file.close()
# 按文件中数据的组织形式,文件分为以下两大类
# 1、文本文件:存储的是普通字符文本,默认为unicode字符集,可以使用记事本程序打开
# 2、二进制文件:把数据的内容用字节进行存储,无法用记事本打开,必须使用专用的软件打开,举例:MP3音频文件、.jpg、.doc
# r:以只读模式打开文件,文件的指针将会放在文件的开头
# w:以只写模式打开文件,如果文件不存在则创建,如果文件存在则覆盖原有内容,文件指针在文件的开头
# a:以追加模式打开文件,文件指针在原文件末尾
# b:以二进制方式打开文件,不能单独使用,需要与其他模式一起使用,rb或wb
# +:以读写方式打开文件,不能单独使用,需要与其他模式一起使用,a+
# 文件对象的常用方法
# read([size])从文件中读取size个字节或字符的内容返回,若省略size则读取到文件末尾,即一次读取文件所有内容
# readline()从文本文件中读取一行内容
# readlines()把文本文件中每一行都作为独立的对象,并将这些对象放入列表返回
# write(str)将字符串str内容写入文件
# writelines(s_list)将字符串列表s_list写入文件,不添加换行符
# seek(offset,[whence])将文件指针移动到新的位置,offset表示相对于whence的位置:
# offset:为正往结束方向移动,为负往开始方向移动
# whence不同的值代表不同的含义:1、0:从文件头开始计算(默认值)2、1:从当前位置开始计算3、2:从文件尾开始计算
# tell()返回文件指针的当前位置
# flush()把缓冲区的内容写入文件,但不关闭文件
# close()把缓冲区的内容写入文件,同时关闭文件,释放文件对象相关资源

# with语句(上下文管理器)
# with语句可以自动管理上下文资源,不论什么原因跳出with块,都能确保文件正确的关闭,以此来达到释放资源的目的
with open('a.txt','r') as file: # 自动管理资源
    print(file.read())

# 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语句实现图片的复制
with open('云海.jpg','rb') as src_file:
    with open('头像图片.jpg','wb') as target_file:
        target_file.write(src_file.read())

# 目录操作
# os模块与操作系统相关的一个模块
# os与os.path模块用于对目录或文件进行操作
import os
# os.system('notepad.exe') # 与win+R输入notepad作用相同
# os.system('calc.exe')
# 直接调用可执行文件(以打开腾讯会议为例)
# os.startfile('D:\\腾讯会议\\wemeetapp.exe') # 注意文件地址为\\

# os模块操作目录相关函数
# 1、getcwd()返回当前的工作目录
# 2、listdir()返回指定路径下的文件和目录信息
# 3、mkdir()创建目录
# 4、makedirs()创建多级目录
# 5、rmdir()删除目录
# 6、removedirs()删除多级目录
# 7、chdir()将路径设置为当前工作目录
print(os.getcwd())
lst=os.listdir('../chap16')
print(lst)
# os.mkdir('newdir')
# os.makedirs('A/B/C')
# os.rmdir('newdir')
# os.removedirs('A/B/C')
os.chdir('D:\\NewDeskTop\\Python实践\\first\\chap16')
print(os.getcwd())

# os.path模块操作目录相关函数
# 1、abspath()用于获取文件或目录的绝对路径
# 2、exists()用于判断文件或目录是否存在
# 3、join()将目录与目录或者文件名拼接起来
# 4、splitext()分离文件名和扩展名
# 5、basename()从一个目录中提取文件名
# 6、dirname()从一个路径中提取文件路径,不包括文件名
# 7、isdir()用于判断是否为路径
import os.path
print(os.path.abspath('Demo1.py'))
print(os.path.exists('Demo1.py'),os.path.exists('Demo2.py'))
print(os.path.join('D:\\NewDeskTop\\Python实践\\first','chap16'))
print(os.path.split('D:\\NewDeskTop\\Python实践\\first\\chap16'))
print(os.path.splitext('Demo1.py'))
print(os.path.basename('D:\\NewDeskTop\\Python实践\\first\\chap16'))
print(os.path.dirname('D:\\NewDeskTop\\Python实践\\first\\chap16'))
print(os.path.isdir('D:\\NewDeskTop\\Python实践\\first\\chap16'))

# 列出指定目录下的所有py文件
path=os.getcwd()
lst=os.listdir(path)
for filename in lst:
    if filename.endswith('.py'): # 判断是否以.py结尾
        print(filename)

# 列出各级目录下的文件的路径
path=os.getcwd()
lst_files=os.walk(path) # walk遍历所有文件
for dirpath,dirname,filename in lst_files:
    # 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))

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值