print("===========================文件操作===============================")
#打开文件
#file:打开的文件 (路径)
#mode:打开模式,r 是只读
#encoding:打开文件时的编码方式
#open()函数会有一个返回值,打开文件对象
#在win操作系统,默认以utf-8编码模式打开
#解决方法,读取和读取要使用相同的编码方式
#方法1
#file = open("xxx.text",encoding="utf-8")
#绝对路劲
file = open("/Users/macos/Desktop/vsCode/Pfile/Pfile.rtf",encoding="UTF-8")
print(file.read())
file.close() #操作完成要关闭文件
print("===========================文件路劲===============================")
#1.绝对路劲 :从电脑盘符开始 /Users/macos/Desktop/vsCode/Pfile/Pfile.rtf
#2.相对路劲 :当前文件所在的文件夹开始的路劲
import os
print(os.sep) #win系统,文件夹之间用 \ 分割, mac,lunix 里用 / 分割
print(os.name) # NT/posix
#绝对路劲 :从电脑盘符开始
file = open("/Users/macos/Desktop/vsCode/Pfile/Pfile.rtf",encoding="UTF-8")
print("1=-=-=-=-=-=-=-=-=")
print(file.read())
file.close() #操作完成要关闭文件
#相对路劲 :当前文件所在的文件夹开始的路劲
file = open("Pfile/Pfile.rtf",encoding="UTF-8")
print("2=-=-=-=-=-=-=-=-=")
print(file.read())
file.close() #操作完成要关闭文件
#读取方式
print("3=-=-=-=-=-=-=-=-=")
file = open("Pfile/Pfile2.xml")
print(file.read())
file.close()
print("4=-=-=-=-=-=-=-=-=")
file = open("Pfile/Pfile3.html")
print(file.read())
file.close()
#相对路劲
# ../表示返回上一级
# ./表示当前文件夹
# / 不能随便写
print("===========================文件打开方式===============================")
#mode:文件打开方式,默认使用rt
#r:只读, 不能写入
#w:只写, 不可读
#t:文本形式打开文件
#b:以二进制形式打开文件,可以操作非文本文件
#rb:以二进制读取
#wb:以二进制写入
#a:追加,在最后追加内容,文件不存在则创建文件,存在则追加
#rt以文本形式读取
#不推荐,出错
#r+:可读可写,文件不存在则报错
#w+:可读可写,文件不存在则创建,存在则覆盖
#只可读,不可写
file = open("Pfile/Pfile3.html","r",encoding="UTF-8")
print(file.read())
file.close()
#写入时,不存在的文件会自动创建,不可读
#写入时,存在的文件会被覆盖
file = open("Pfile/Pfile4.html","w",encoding="utf8")
file.write("hello4444")
file.close()
#wb:以二进制写入
file = open("Pfile/Pfile5.txt","wb")
file.write("今天天气真好呀!!!!!!!!".encode("utf8"))
file.close()
file = open("Pfile/Pfile4.html","r") #默认读取方式 utf-8
print(file.read())
file.close()
file = open("Pfile/Pfile6.txt","w+")
file.write("哈哈哈哈哈哈")
file.seek(0,0) #写入后,文件指针到最后,需要seek将指针重置到开头
print(file.read())
file.close()
print("===========================文件读取方式===============================")
file = open("Pfile/Pfile7.txt",encoding="utf8")#默认以rt形式读取文件
#print(file.read())#读所有的数据
#print(file.readline())#读一行,指针会移到到第二行
#content = file.readlines()#读取所有行数据,保存到一个数组,指针会移到到最后行
#print(content)
#rt形势下,长度:为字符数
#rb形势下,长度:为字节数
x = file.read(10)#指的是读取的长度
print(x)
file.close()
print("===========================判断文件是否存在===============================")
import os
file = "Pfile/Pfile7.txt"
if os.path.isfile(file):
print("文件存在,可以打开")
else:
print("文件不存在")
#以点作为分隔符,分割名字跟后缀, rpartition 为从右往左切
aa ="ASKKD.txt"
aaa = aa.rpartition(".") #('ASKKD', '.', 'txt')
print(aaa)
#系统分割文件后缀名,推荐
bbb = os.path.splitext(aa) #('ASKKD', '.txt')
print(bbb)
print("===========================大文件拷贝===============================")
#二进制读写最方便
import os
filePath = "Pfile/Pfile7.txt"
if os.path.isfile(filePath):
print("文件存在,可以打开")
old_file = open(filePath,"rb")#以二进制形式打开
bbb = os.path.splitext(filePath)
print(bbb) #('Pfile/Pfile7', '.txt')
new_file = bbb[0] + ".bak" + bbb[1]
print(new_file) #Pfile/Pfile7.bak.txt
new_file = open(new_file,"wb")#以二进制形式写入
while True:
content = old_file.read(1024)#每次读1024字节
new_file.write(content)
if not content:
print(content)#b''
break
old_file.close()
new_file.close()
else:
print("文件不存在")
print("===========================CSV文件写===============================")
#以纯文本的形式存储表格数据:csv文件
import csv #系统内置模块
file = open("Pfile/Pfile10.csv","w",encoding="utf8",newline="")
w = csv.writer(file)
w.writerow(["name","age","score"]) #写1行数据
w.writerow(["张三","19","69"]) #写1行数据
w.writerow(["包子","29","100"]) #写1行数据
w.writerows([ #写入多行数据
["张4","19","69"],
["张5","19","69"],
["张6","19","69"],
["张7","19","69"]
])
file.close()
print("===========================CSV文件读===============================")
file = open("Pfile/Pfile10.csv","r",encoding="utf8",newline="")
r = csv.reader(file)
for data in r:
print(data)
网友评论