Python入门
Python开发工具的使用:Pycharm的配置使用
第一章:Python入门学习(一)Print函数、Input函数、基本数据类型、运算符、流程控制语句、循环语句
第二章:Python入门学习(二) 列表的增删改查
第三章:Python入门学习(三) 字典的增删改查
第四章:Python入门学习(四)元组与集合
第五章:Python入门学习(五)字符串的操作
第六章:Python入门学习(六)函数学习
第七章:Python入门学习(七)Python异常处理机制
第八章:Python入门学习(八)Python中的类和对象
第九章:Python入门学习(九)Python面向对象的三大特征封装、继承和多态
第十章:Python入门学习(十)Python模块化编程
第十一章:Python入门学习(十一)Python的IO操作
代码仓库地址:Python入门项目
编码格式
常见的编码格式:
Python的解释器
使用的是Unicode
(内存)
py文件
在磁盘上使用的是UTF-8
(外存)
文件的读写原理
文件的读写俗称IO操作
文件的读写操作
使用内置函数open()
创建文件对象
语法规则
常用的文件打开模式
文件的类型:
按文件中的数据的组织形式,文件分为以下两大类
- 文本文件:存储的是普通
字符
文本,默认为unicode
字符集,可以使用记事本程序打开 - 二进制文件: 把数据内容用
字节
进行存储,无法用记事本打开,必须使用专用的软件打开,比如:mp3文件、jpg文件、doc文件等。
读取文件
创建1.txt
文件
使用open()
函数获得文件对象
# author: LiuShihao
# data: 2020/12/1 12:22 下午
# youknow: 各位老铁,我的这套代码曾经有人出价三个亿我没有卖,如今拿出来和大家分享,不求别的,只求大家免费的小红心帮忙点一点,这里谢过了。
# desc:
file = open('1.txt','r')
print(file.readlines()) # 结果是一个列表
file.close()
写入文件
# 写入文件 w:文件如果不存在则创建,存在则覆盖,文件指针在文件的开头
file2 = open('2.txt','w')
file2.write('HelloWorld')
file2.close()
file2 = open('2.txt','w')
file2.write('HelloPython')
file2.close()
将原来文件中的内容覆盖
追加
之前的2.txt文件
file2 = open('2.txt','a')
file2.write('HelloPython')
file2.close()
之后的2.txt
文件
二进制文件 复制图片
# author: LiuShihao
# data: 2020/12/1 12:36 下午
# youknow: 各位老铁,我的这套代码曾经有人出价三个亿我没有卖,如今拿出来和大家分享,不求别的,只求大家免费的小红心帮忙点一点,这里谢过了。
# desc:
src_file = open('3.png','rb') # 读取二进制文件
target_file = open('3_copy.png','wb')# 写入二进制文件
# 边读边写
target_file.write(src_file.read())
print("复制结束")
# 关闭
src_file.close()
target_file.close()
文件对象的常用方法
file = open('1.txt','r')
#print(file.read()) #读取文件的全部内容
# print(file.read(2)) # 读取文件两个字符
# print(file.readline()) # 读取一行数据
# print(file.readlines()) # 将文件中的每一行作为一个对象 放入列表返回
print("指针的当前位置:",file.tell())
file.seek(3) # 跳过三个字节
print(file.read())
print("指针的当前位置:",file.tell()) # 返回指针的当前位置
file.flush()# 刷新文件缓冲区的内容
file.close()# 释放文件资源
file = open('1.txt','a')
# file.write('Hello')
# 写入列表
lst = ['Java','Python',"Go"]
file.writelines(lst)
file.close()
with语句(上下文管理器)
with语句可以自动管理上下文资源,不论什么原因跳出with块,都能确保文件正确的关闭,以此来达到释放资源的目的
# author: LiuShihao
# data: 2020/12/1 4:14 下午
# youknow: 各位老铁,我的这套代码曾经有人出价三个亿我没有卖,如今拿出来和大家分享,不求别的,只求大家免费的小红心帮忙点一点,这里谢过了。
# desc:创建 MyContentMgr类
"""
MyContentMgr实现了特殊方法__enter__()、__exit__()成为该类对象遵守了上下文管理器协议
该类对象的实例对象成为上下文管理器
"""
class MyContentMgr:
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('3.png','rb') as file:
with open('4_copy.png','wb') as target_file:
target_file.write(file.read())
print("拷贝结束")
目录操作
os模块
是Python内置的雨操作系统功能和文件系统功能相关的模块,该模块中的语句的执行结果通常与操作系统有关,在不同的操作系统上运行,得到的结果可能不一样。
os模块
与os.path模块
用于对目录或文件进行操作
os模块操作目录相关函rr
# author: LiuShihao
# data: 2020/12/1 4:43 下午
# youknow: 各位老铁,我的这套代码曾经有人出价三个亿我没有卖,如今拿出来和大家分享,不求别的,只求大家免费的小红心帮忙点一点,这里谢过了。
# desc:os模块与操作系统相关的一个模块
import os
# 直接调用可执行文件
# 计算器
#os.system('/System/Applications/Calculator.app/Contents/MacOS/Calculator')
# 打开QQ
# os.system('/Applications/QQ.app/Contents/MacOS/QQ')
# 获返回当前的工作目录
print(os.getcwd())
# 返回指定目录下的文件和目录信息
#print(os.listdir('/Users/LiuShihao/Desktop/Python3'))
# 创建目录
#os.mkdir('/Users/LiuShihao/Desktop/Python3/2.txt')
#print(os.listdir('/Users/LiuShihao/Desktop/Python3'))
# 删除目录
# os.rmdir('/Users/LiuShihao/Desktop/Python3/2.txt')
# print(os.listdir('/Users/LiuShihao/Desktop/Python3'))
# 创建多级目录
# os.makedirs('A/B/C')
# 删除多级目录
#os.removedirs('A/B/C')
# 将Path设置为当前的工作目录
os.chdir('/Users/LiuShihao/PycharmProjects/pythonProject/first/modules')
print(os.getcwd())
os.chdir('/Users/LiuShihao/PycharmProjects/pythonProject/first/io')
print(os.getcwd())
os.path模块操作目录相关函数
# author: LiuShihao
# data: 2020/12/1 5:01 下午
# youknow: 各位老铁,我的这套代码曾经有人出价三个亿我没有卖,如今拿出来和大家分享,不求别的,只求大家免费的小红心帮忙点一点,这里谢过了。
# desc: os.path模块操作目录相关函数
import os.path
# 获得文件的绝对路径
print(os.path.abspath('demo8.py'))
# 判断文件是否存在
print(os.path.exists('demo8.py'),os.path.exists('demo88.py'))
# 目录拼接
print(os.path.join('/Users/','Python3'))
# 分离文件名和目录
print(os.path.split('/Users/LiuShihao/PycharmProjects/pythonProject/first/io/demo8.py'))
# 分离文件名和文件扩展名
print(os.path.splitext('demo8.py'))
# 从一个目录中提取文件名
print(os.path.basename('/Users/LiuShihao/PycharmProjects/pythonProject/first/io/demo8.py'))
# 从一个路径中提取文件路径,不包括文件名
print(os.path.dirname('/Users/LiuShihao/PycharmProjects/pythonProject/first/io/demo8.py'))
# 判断是否为路径
print(os.path.isdir('/Users/LiuShihao/PycharmProjects/pythonProject/first/io/demo8.py'))
练习
要求:列出指定目录下的所有py文件
# author: LiuShihao
# data: 2020/12/1 5:09 下午
# youknow: 各位老铁,我的这套代码曾经有人出价三个亿我没有卖,如今拿出来和大家分享,不求别的,只求大家免费的小红心帮忙点一点,这里谢过了。
# desc: 要求:列出指定目录下的所有py文件
import os
path = os.getcwd()
lst = os.listdir(path)
for filename in lst:
if filename.endswith('py'): # 获取以.py文件结尾的文件
print(filename)
递归获得文件夹下的所有文件
# author: LiuShihao
# data: 2020/12/1 5:12 下午
# youknow: 各位老铁,我的这套代码曾经有人出价三个亿我没有卖,如今拿出来和大家分享,不求别的,只求大家免费的小红心帮忙点一点,这里谢过了。
# desc:
import os
path = os.getcwd()
list_files = os.walk(path)
for dirpath,dirname,filename in list_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, file))