day-15 编码AND目录AND文件操作

目录

编码

文件操作

打开模式

文件常用方法

目录操作

os模块

os.path


编码

# from encodings import gbk
# encoding=gbk 自定义规则
# python解释器使用的是Unicode
# pycharm默认 UTF-8规则
print('你好')

文件操作

# 文件对象的常用方法
# write(str)写入字符串
file=open('c.txt','a')
# file.write('hello')
lst=['java','go','python']
file.writelines(lst)
file.close()
# write(s_list)写入列表

# 文件对象的常用方法
# read[(size)] 从文件中读取size个字节或字符的内容返回,,若省略则全读
file=open('a.txt','r')
print(file.read(2))
file.close() # 连续两个print只输出一个结果,close很关键
file=open('a.txt','r')
print(file.read())
file.close()
# readline
file=open('a.txt','r')
print(file.readline()) # 读一行
file.close()
# readlines 将文本中每一个对象都放到列表,一块输出
file=open('a.txt','r')
print(file.readlines()) # 全读
# write(str)写入字符串
file.close()
# write(s_list)写入列表

打开模式

# 读取磁盘文件内容 r模式 只读
file=open('a.txt','r') # 创建了一个源文件映射
print(file.readlines())
file.close()

# 文件打开模式 w模式
file=open('b.txt','w') # 创建了一个源文件映射
file.write('Python')
file.close()

# 文件打开模式 a模式 追加
file=open('b.txt','a') # 创建了一个源文件映射
file.write('Python') # 运行一次多一个python
file.close()

# 文件打开模式 b模式 以二进制
src_file=open('logo.png','rb') # 创建了一个源文件映射
target_file=open('copylogo.png','wb')
target_file.write(src_file.read())

target_file.close()
src_file.close()

# 文件打开模式 +模式 以读写方式 不能单独使用

文件常用方法

# seek 跳过字节数,一个中文占两个字节
file=open('a.txt','r')
file.seek(2)
# file.seek(1) 1不合法
print(file.read())
# tell() 显示当前光标的位置
print(file.tell())
file.close()

# flush() 把缓冲区的内容写入文件,但不关闭文件
file=open('d.txt','a')
file.write('hello')
file.flush() # 如果改为close则报错,close后不能再写入
file.write('world')
file.close()
# close() 关闭文件

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

例子

'''
MycontentMgr实现了特殊方法enter和exit,则该类遵守了上下文管理器协议,该类对象的实例对象,称为上下文管理器
MycontentMgr()
'''
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方法被调用执行了',1/0)
with MycontentMgr() as file: # 即使产生异常也会调用两个方法
file.show()

# 复制图片
with open('logo.png','rb') as src_file:
with open('copy2logo.png','wb') as target_file:
target_file.write(src_file.read()) # 读源文件写入目标文件

目录操作

os模块

# os模块 与操作系统有关
import os
os.system('notepad.exe') # 打开电脑记事本
os.system('calc.exe') # 打开计算器
# 直接调用可执行文件
os.startfile('D:\App\Bin\qq.exe') # 类似于快捷方式

import os
print(os.getcwd())

lst=os.listdir('../chap1') #返回指定路径下的文件和目录信息,返回当前目录的上一级目录的chap1路径下的所有文件和目录信息
# ./是当前目录 ../是上级目录
print(lst)
# 输出 ['demo1.py', 'demo2.py']

# os.mkdir('newdir2') #在当前目录下新建目录

# os.makedirs('A/B/C') # 多级目录

# os.rmdir('A/B/C') # 删除C目录
# os.removedirs('A/B') # 删除多级目录

os.chdir('D:\pyddl\chap1') # 设置当前工作目录
print(os.getcwd())

os.path

import os.path
print(os.path.abspath('demo9.py')) # 输出绝对路径
print(os.path.exists('demo13.py'),os.path.exists('demo18.py')) # 判断文件是否存在
print(os.path.join('D:\pyddl','demo13.py')) # 路径拼接
print(os.path.split('D:\pyddl\demo15-编码\demo13.py')) # 分离文件路径和文件名字
print(os.path.splitext('demo13.py')) # 分离文件名和扩展名
print(os.path.basename('D:\pyddl\demo15-编码\demo13.py')) # 目录中提取文件名
print(os.path.dirname('D:\pyddl\demo15-编码\demo13.py')) #路径中提取目录不包括文件名
print(os.path.isdir('D:\pyddl\demo15-编码\demo13.py')) # 判断是否为路径
print(os.path.isdir('D:\pyddl')) # 判断是否为路径

案例1

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

案例2

# 遍历所有
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))

for file in filename:
print(os.path.join(dirpath,file))
print('---------------------------')

学习链接

【花了2万多买的Python教程全套,现在分享给大家,入门到精通(Python全栈开发教程)】 https://www.bilibili.com/video/BV1wD4y1o7AS/?p=132&share_source=copy_web&vd_source=5f93c948050b4284ccf31ae9244fad4c

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

哈哈哈哈去3

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

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

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

打赏作者

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

抵扣说明:

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

余额充值