'''
在Python中,内置了文件File对象。
'''
#打开一个不存在的文件时先创建该文件
#file1 = open("status.txt", "w+")
#print(file1)
file2 = open("status.txt", "r", encoding = 'utf-8')
#print(file2)
file3 = open("ue_bg.png", "rb")
#print(file3)
'''
打开文件的模式:
r 只读。指针在文件头
rb 只读。二进制。指针在文件头
r+ 可读,可写。新内容从头开始覆盖原内容
rb+
w 只写
wb 只写。二进制。
w+ 读写。打开文件后,会清空文件内容变成空文件
wb+ 读写。二进制。
a 追加模式。指针在文件末尾
a+ 读写。追加
打开文件时,w,w+,a,a+ 模式下,当文件不存在时,会创建新文件
'''
#关闭文件 close() 方法先刷新缓冲区中还没有写入的信息,然后再关闭文件
#file1.close()
file2.close()
file3.close()
#打开文件 使用with语句
'''
如果打开文件时,出现异常,那么将导致文件不能及时被关闭
可以使用with语句,从而实现在处理文件时,无论是否抛出异常,保证with语句执行完毕后关闭文件
'''
with open('message.txt', 'w') as file: #创建或打开文件
pass
#写文件
file = open("status.txt", "w+", encoding = 'utf-8')
print(file)
file.write("你使用一张加速卡,小鸡撸起袖子开始吃饲料。进食速度大大加快")
file.flush() #刷新缓存区 保存内容
file.close()
#读文件
'''
1.读取指定字符
调用read()方法的前提是打开文件,指定的打开模式为r或r+
'''
with open("status.txt", "r+", encoding = 'utf-8') as file:
print(file)
string = file.read(9)
print(string)
print(len(string.encode('utf-8')))
'''
file.seek(offset, [, whence])
offset 用于指定移动的字符个数 不是字节个数
whence 用于指定从什么位置开始计算 0 文件开头 1 当前位置 2 文件末尾
注意: 当没有用b模式(即rb),那么只允许从文件头开始计算相对位置
'''
with open("status.txt", "r+", encoding = 'utf-8') as file:
file.seek(3) #不是字节个数
string = file.read(9)
print(string)
'''
2.读取一行
调用file.readline()
'''
'''
3.读取全部行
调用file.read() 不指定读取字符个数,即全部读取,返回字符串列表
调用file.readline() 全部读取,返回字符串列表
'''
print("#==========================================================================#")
'''
目录也就是文件夹
python中没有提供直接操作目录的函数或对象,需要内置的 os 和 os.path 模块实现
'''
# 目录操作,包括判断目录是否存在,创建目录,删除目录和遍历目录等
# os 模块
'''
os.name 用于获取操作系统的类型
os.linesep 用于获取当前操作系统上的换行符
os.sep 用于获取当前操作系统所使用的路径分隔符
'''
import os
print(os.name)
print(os.linesep)
print(os.sep)
# 获取当前工作目录
print(os.getcwd())
# 相对路径 就是 依赖于 当前工作目录的
'''
相对路径的路径分割符,可以使用\进行转义,即\\
可以直接使用/代替路径分割符号
还可以在路径前面加上r或者R,那么该字符串将原样输出,不需要进行转义
'''
# 绝对路径 就是 文件的实际路径
file = open("status.txt", "r+", encoding = 'utf-8')
print(os.path.abspath("status.txt"))
# 拼接路径
'''
os.path.join(path1, path2, ...)
拼接时,不会检查路径是否真实
1.如果在拼接的路径中,没有一个绝对路径,那么拼接出来一个相对路径。
2.如果存在多个绝对路径,从左到右,以最后一个绝对路径为准。
'''
# 判断目录是否存在
'''
os.path.exists(path) 返回 True 或 False
还可以用来判断文件是否存在
'''
# 创建目录
'''
1.创建一级目录
os.mkdir(path, mode = 0o777)
如果文件已经存在抛出异常
如果该目录的上一级目录不存在,抛出异常
'''
if not os.path.exists('D:\\demo'): # 创建绝对路径
os.mkdir('D:\\demo')
else:
print("路径已存在")
if not os.path.exists('temp'): # 创建相对路径
os.mkdir('temp')
else:
print("路径已存在")
'''
2.创建多级目录
os.makedirs(path, mode = 0o777)
'''
# 还可以使用os.mkdir()递归创建多级目录
# 删除目录
'''
os.rmdir(path) 只能删除空目录。
当目录不存在时,系统找不到指定文件,异常。
删除非空目录,可以使用 python内置的标准模块 shutil
shutil.rmtree()
'''
# 遍历目录
'''
os.walk() 遍历指定目录下的全部目录(包括子目录)及文件。只在unix系统 windows系统下有效
os.walk(top[, topdown][, onerror][, followlinks])
top 遍历内容的根目录
topdown True 表示自上而下遍历(先根后子)(默认) False 表示自下而上遍历(先子后根)
onerror 指定错误处理方式(函数),默认为忽略
返回值 元组(dirpath, dirnames, filenames)
(当前遍历路径,当前路径下子目录,当前路径下文件)
'''
tuples = os.walk(r'D:\Python\Python376\temp')
for p in tuples:
print(p, "\n")
Python入门(九)文件及目录操作
最新推荐文章于 2024-04-30 18:51:13 发布