类unit操作系统的根结点一般用“\”表示,一切的文件和目录都在根目录下面
Windows操作系统不同,每个磁盘分区都有一个根目录,用分区名加上反斜杠表示
虽然这两种方法不一样,但表示路径的时候都是以下两种方法:绝对路径、相对路径
以下为类unix系统与Windows系统绝对路径的表示:
相对路径:
用相对路径时,用“.”表示参照文件当前所在的目录,“..”表示更上一层的父目录,再上一层的话依然用".."并跟上斜杠或反斜杠进行分隔
“./”是可以省略的,所以同一目录下的文件想相互用相对路径找到彼此的话可以直接使用文件名
打开操作
f = open("./data/txt", "r", encoding = "utf-8")
print(f.read()) #会读全部的文件内容,并打印
print(f.read()) #会读空字符串,并打印
第一个参数可以填绝对路径或者相对路径,第二个参数表示模式,常见的有:
"r" - 读取模式(只读)
"w" - 写入模式(只写)
第二个参数也可以不填,默认为只读模式
还有第三个可选的参数叫做“encoding”,表示编码方式
第二次read的时候读出来空字符串是因为第一次读完之后会记录读取的位置,而第一次read已经读到结尾,第二次后面就没有内容了,因此返回空字符串
在文件体积很大的时候最好不要用read,因为读出来的内容会占用很大内存,甚至把内存给爆了
如果不想一次性读完文件,可以给read传一个数字,表示读多少字节
f = open("./data/txt", "r", encoding = "utf-8")
print(f.read(10)) # 读1 - 10字节的内容,并打印
print(f.read(10)) # 读11- 20字节的内容,并打印
print(f.readline()) # 会读一行文件内容,并打印
readline()会根据换行符判断一行,到最后一行的时候继续读取会返回空字符串
因此readline()常用while循环
f = open("./data/txt", "r", encoding = "utf-8")
line = f.readline()
while line != "":
print(line)
line = f.readline()
或者
f = open("./data/txt", "r", encoding = "utf-8")
# readlines会读全部文件内容,并把每行作为列表元素返回
print(f.readlines())
for a in lines:
print(a)
f.close()
之后会输出以下结果:
['白日依山尽\n', '黄河入海流\n', '欲穷千里目\n', '更上一层楼']
白日依山尽
黄河入海流
欲穷千里目
更上一层楼
操作完记得加上f.close()关闭文件,释放资源
如果怕忘记关闭文件操作,可以换个写法:
with open("./data.txt") as f: # f为open操作的返回值
print(f.read())
写操作:
with open("./poem.txt","w",encoding = "utf - 8") as f:
f.write("我欲乘风归去\n")
f.write("又恐琼楼玉宇\n")
f.write("高处不胜寒\n")
或者
with open("./poem.txt","w",encoding = "utf - 8") as f:
f.write("我欲乘风归去\n又恐琼楼玉宇\n高处不胜寒\n")
想要在文件后面再加几句,不能再用“w”模式,因为新增的内容在这个模式下面会直接覆盖文件原本的内容,因此要用“a”模式
with open("./poem.txt","w",encoding = "utf - 8") as f:
f.write("起舞弄清影\n")
f.write("何似在人间\n")
——————————————————
视频学习笔记,视频源地址:
【01-理论课】快速易懂Python入门_哔哩哔哩_bilibili