**注意: 文中相关的路径和文件需要根据实际情况替换。**
一、文件基础操作
1. 基本读写操作
代码如下(示例):
"""
文件基本操作
mode
r:读(纯文本)
read(): 读取所有内容
readline():每次读取一行内容
readlines():读取所有的行保存的列表
readable():判断是否有可读的
w:写(纯文本)
write()
writelines():自己加换行
注意:
写操作write(s),每次都会清空原来的内容清空,写当前的内容
rb:读二进制(图片、视频、音乐等)
wb:写二进制()
opr:
open(path/fileName,mode='rt') 默认是gbk编码方式;decode 返回是流对象
如果传递文件名有误,抛异常 FileNotFoundError
"""
print("读文件".center(20, "*"))
# 读取文本
stream = open(file=r'f:\test.txt', encoding='utf8')
# line = stream.readline()
# print(line) #
# content = stream.read()
# print(content)
flag = stream.readable()
print(flag)
# while True:
# line = stream.readline()
# print(line)
# if not line:
# break
lines = stream.readlines()
print(lines)
# 读取binary文件:图片
stream = open(file=r'f:\test.jpg', mode='rb')
pic = stream.read()
print(pic)
stream.close()
print("写文件".center(20, "*"))
stream = open(file=r'f:\test.txt', mode='w', encoding='utf8')
s = '''
统一代码管理
统一代码管理 GitLib,是基于 Git 的代码管理平台,数十万企业正在使用,提供代码托管、代码评审、代码扫描、质量检测、持续集成等功能,全方位保护企业代码资产,帮助公司实现安全、稳定、高效的代码托管和研发管理。
统一开发工具
”工欲善其事,必先利其器“,统一开发工具为流程中的每一步提效交付更迅捷
统一规范标准
”车同轨,书同文“,统一规范标准为研发人员必须遵循的最低规范要求,无论什么产品,什么项目,都必须得严格遵守。
统一平台及技术栈
统一平台及技术栈解决不统一带来的开发效率问题,系统维护成本显著增加,统一技术选型,降低团队学习成本;完善技术生态,技术方案提取和复用,提高开发效率。
统一组件库
组件是对数据和方法的简单封装,随着开发与设计、策划、产品等岗位的密切协作,为了统一沟通语言,设计、产品等岗位也在广泛的使用组件这一概念。统一组件库可以提升工作能效和开发质量。
'''
result = stream.write(s) # 返回写了几个字符
print(result)
result = stream.write('hello world!')
result = stream.write(' 张三')
result = stream.writelines(["你好吗?\n", '一起去吃饭可以,有时间\n'])
print(result)
stream.close()
print("写文件:不清空!".center(20, "*"))
stream = open(file=r'f:\test.txt', mode='a', encoding='utf8')
result = stream.write("新增")
print(result)
2. 文件复制操作
代码如下(示例):
import os
# 文件复制
"""
原文件:F:\test.jpg
目标文件:F:\test.jpg
with: 结合open使用,自动释放资源
open:只能是文件
os.path : 对系统中文件的操作
os.path.dirname 获取文件夹
os.path.join 拼接路径
"""
print("复制文件".center(30, "*"))
with open(r"F:\test.jpg", 'rb') as r_stream:
content = r_stream.read()
abs_file_name = r_stream.name
print(abs_file_name)
start_index = abs_file_name.rfind("\\") + 1
print(abs_file_name[start_index:]) # 截取文件名
with open(r"F:\test1.jpg", 'wb') as w_stream:
w_stream.write(content)
print("文件复制完成!")
print("批量复制文件".center(30, "*"))
print(os.path)
path = os.path.dirname(__file__)
print(path) # 当前文件的路径
print(type(path))
new_path = os.path.join(path, "test.jpg")
print(new_path)
print("复制文件到当前文件夹下".center(30, "*"))
with open(r"F:\test.jpg", 'rb') as r_stream:
content = r_stream.read()
new_path = os.path.join(os.path.dirname(__file__), "test.jpg")
with open(new_path, 'wb') as w_stream:
w_stream.write(content)
print("end-------------完成文件复制")
二、操作系统模块
1.基础系统操作
代码如下(示例):
# os 模块
import os
import shutil
dir = os.getcwd()
# 遍历
result = os.listdir(dir) # 返回当前文件中的文件夹和文件,返回列表
print(result)
# 创建目录
new_dir = os.path.join(dir, "copy_file")
print(new_dir)
if not os.path.exists(new_dir): # 目录不存在,创建
os.mkdir(new_dir) # 创新新目录
if os.path.exists(new_dir):
shutil.rmtree(new_dir) # 删除
shutil.copytree(dir, new_dir)
print('copy dir finished!')
# f = os.rmdir(new_dir) # 只能删除空文件夹
# os.removedirs(new_dir) # 删除多个目录
# print(f)
print("清空文件夹,并删除目录".center(30, "*"))
# 遍历删除文件夹中文件和目录
new_result = os.listdir(new_dir)
for file in new_result:
file_path = os.path.join(new_dir, file)
os.remove(file_path)
else:
os.rmdir(new_dir) # 删除目录
print("切换目录".center(30, "*"))
f = os.chdir("../dictionary")
print(f)
print(os.getcwd())
2.绝对路径和相对路径
代码如下(示例):
# 文件路径操作
import os.path
# 绝对路径
print(os.path.abspath(__file__)) # 获取绝对路径
print(os.path.isabs(__file__)) # 判断是否是绝对路径
# 相对路径
os.path.isabs("/")
print(os.path.isabs("./test.jpg"))
# 获取文件夹
path1 = os.path.dirname(__file__) # 绝对路径,文件夹
path2 = os.path.abspath(__file__) # 通过相对路径获取当前文件的绝对路径
print(path1, path2)
path3 = os.getcwd() # 获取当前文件夹类似os.path.dirname(__file__)
print(path3)
# 获取文件路径
result = os.path.split(path2) # 目录+ 文件名字
print(result)
print(result[1])
suf = os.path.splitext(path2) # 获取扩展名
print(suf)
size = os.path.getsize("test.jpg") #获取文件大小,单位是字节
print(size)
该处使用的url网络请求的数据。
三、练习
1. 拷贝联系
# 工具类
# copy
import os.path
def copy(source, target):
if not os.path.exists(target):
os.mkdir(target)
if os.path.isdir(source) and os.path.isdir(target):
file_list = os.listdir(source)
for file in file_list:
path = os.path.join(source, file)
with open(path, 'rb') as r_stream:
content = r_stream.read()
target_file = os.path.join(target, file)
with open(target_file, 'wb') as w_stream:
w_stream.write(content)
else:
print("拷贝完成!")
# 调用函数
src = os.getcwd()
print(src)
tgt = os.path.join(src, "new_copy_file")
src = "E:\\workspace\\python\\demo-python\\dictionary"
print(tgt)
copy(src, tgt)
2. 图书管理系统
# 工具类
# copy
import os.path
def copy(source, target):
if not os.path.exists(target):
os.mkdir(target)
if os.path.isdir(source) and os.path.isdir(target):
file_list = os.listdir(source)
for file in file_list:
path = os.path.join(source, file)
with open(path, 'rb') as r_stream:
content = r_stream.read()
target_file = os.path.join(target, file)
with open(target_file, 'wb') as w_stream:
w_stream.write(content)
else:
print("拷贝完成!")
# 调用函数
src = os.getcwd()
print(src)
tgt = os.path.join(src, "new_copy_file")
src = "E:\\workspace\\python\\demo-python\\dictionary"
print(tgt)
copy(src, tgt)
user_book.txt:
sanduo:三国演义->水浒传
sanduo:鬼吹灯->倩女幽魂
sanduo:盗墓笔记->斗罗大陆
sanduo:鬼吹灯
sanduo:倩女幽魂
users.txt:
sandduo 123456
sanduo 123
books.txt:
斗罗大陆
斗破苍穹
三国演义
水浒传
诛仙
倩女幽魂
盗墓笔记
鬼吹灯
总结
这里对文章进行总结:
# 复习
"""
文件操作:
open(path,mode)
mode------>r
s.read()
s.readline()
s.readlines()
s.readable()
with open('') as r_stram:
pass
mode------>w
s.write()
s.writelines()
s.writeable()
with open('','w') as w_stram:
w_stram.write('hello')
os.path: os模块,常用函数
os.path.abspath() 绝对路径
os.path.dirname() 获取路径
os.path.isabs() 判断是否是绝对路径
os.path.getcwd() 获取文件夹
os.path.join() 路径拼接
os.path.split() 获取文件路径
os.path.splitext() 扩展名
os.path.getsize() 获取文件大小,单位是字节
os.path.isfile() 是文件
os.path.isdir() 是文件夹
os 中的函数
"""