# f = open("./data.txt" , "r" , encoding = "utf-8"
#"utf-8"为编码方式 "r"为读出 “w” 为写入
# f.read() 返回全部文件内容的字符串
#f.readline() 返回一行文件内容的字符串
#f.readlines() 返回全部文件内容组成的列表
#f.close() 关闭文件,释放资源
#with open("./data.txt") as f: 这也是一种打开文件的方式
#用这种方法打开文件就可以不用close关闭文件了
# f = open("./读文件使用.txt",'r',encoding="utf-8")
# contect = f.read()
# print(contect)
# f.close()
with open("./读文件使用.txt",'r',encoding="utf-8") as d:
contect1 = d.read() #这是全部读出
print(contect1)
print(d.readline())
print("-"*80)
# 添加的参数小于要读取的一行中字符的个数时,只读取我们所写入的参数的字符个数
# ,如果超出了一行的字符个数范围,那么输出的只有这一行的所有字符
# ,不加参数时默认读取这一行的所有字符
print(d.readlines())
#按我自己的话说,如果第一行的最后一个字符为的下标为5,
#那么括号里填的数只要大于0并且小于等于5,那么它就只会输出这一行的所有内容
#如果第二行的最后一个字符下标为11,那么括号里填的数只要大于5并且小于等于11
#那么他就会输出这两行的所有字符
#如果不填数字就会默认输出全文所有字符
#同样不能忘记用encoding="utf_8"确保是用utf—8编码形式输出的
with open("./读文件使用.txt","w",encoding="utf-8") as f:
f.write("你好~") #如果用write写入 会自动清空之前这个文件里的所有内容
f.write("\n") #在write下系统是不会自动帮你换行的,需要手动操作
f.write("吃了吗?")
##运行之后这个文件里的内容就变成了:
# 你好~
# 吃了吗?
#但是用write写入如果这个文件本来不存在,它会自动给你创建一个文件,文件名就是你写入的文件名
#同样不能忘记用encoding="utf_8"确保是用utf—8编码形式输出的
with open("./读文件使用.txt","a",encoding="utf-8") as f:
#用a的方法写入就不会清空之前文件里的数据
#写入的方法和用write方法一样
f.write("阿巴阿巴~")
#运行过后文件里就变成这样了:
# 你好~
# 吃了吗?阿巴阿巴~
#用a写入如果这个文件本来不存在,它也会自动给你创建一个文件,文件名就是你写入的文件名
#同样不能忘记用encoding="utf_8"确保是用utf—8编码形式输出的
with open("./读文件使用.txt","r+",encoding="utf-8") as f:
#这就可以运行 读和写 的操作了
#如果用r+方式写入文件内容,如果文件不存在,它会报错。
#r+方式是读写方式打开一个已有的文件,如果文件不存在则会报错
#如果以r+方式写入文件,会将文件指针移到文件开头,并覆盖之前的所有内容
#是从开头一个字符一个字符覆盖,如果写入的字符长度不够长,那么之前的数据还是会在的
f.write("我是个AI小白")
print(f.read())
#运行之后文件内容为:
#我是个AI小白�?阿巴阿巴~ (这里出了点编码问题,不过问题不大)
#在r+模式下,所有写入和读出方法和“w”与“r”方法一样,熟练了就好