目录
编码
# 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