文件打开
python中打开文件需要使用open()函数
对象=open("文件地址","打开模式")
打开后就要有close()函数关闭
file=open("like.txt","w+")
file.close()
with open("like.txt","w+",encoding='utf-8') as file:
一般不用第一个,因为文件打开就要关闭,而在读或写的过程中随时可能会出错,所以python就引入了with语句来自动帮我们关闭
打开模式
"r" | 读取 | (默认)打开文件,文件不存在就会报错 |
"a" | 追加 | 打开要追加(直接在后面接着写)的文件,文件不存在就创建 |
"w" | 写入 | 打开文件进行写入,文件不存在就创建(w+可读可写,w可写) |
"x" | 创建 | 创建文件,文件存在就会报错 |
"t" | 文本 | (默认)文件以文本模式打开 |
"b" | 二进制 | 文件以二进制模式展开 |
文件写入
模式"a":追加写入的数据到文件末尾
模式"w":新写入的数据会覆盖已有的内容,注意是先覆盖后写入,就算没有数据输入也会把原有数据清空
file.write(str) :写入str到文件中,不会自动换行
file.writelines(list):把list的内容全部写到文件中,不会自动换行
with open("like.txt","w+",encoding='utf-8') as file:
str="like"
list=["like","age 18 ","boy","w+模式"]
file.write(str)
#写入str到文件中,不会自动换行
file.writelines(list)
#把list的内容全部写到文件中,不会自动换行
#w覆盖
with open("like.txt","w+",encoding='utf-8') as file:
str="joke"
list=["joke","age 20 ","boy","w+模式"]
file.write(str)
file.writelines(list)
#a追加
with open("like.txt","a",encoding='utf-8') as file:
str="like"
list=["like","age 18 ","boy","w+模式"]
file.write(str)
file.writelines(list)
文件读取
file.read(size):size是字符大小,不写默认读取全部内容,会自动换行
file.readline():按一行读取,会换行
file.readlines():按多行读取,不会自动换行,每一行以列表的一个元素返回
file.tell():返回光标的位置(按字节返回,一个汉字三个字节,一个字母一个字节)
file.next():把光标移到下一行
file.seek(offset[,whence]):将文件光标移到offset的位置。这个offset一般是相对于文件的开头来计算的,一般为正数。但如果提供了whence参数就不一定了,whence可以为0表示从头开始计算,1表示以当前位置为原点计算。2表示以文件末尾为原点进行计算。需要注意,如果文件以a或a+的模式打开,每次进行写操作时,文件操作标记会自动返回到文件末尾。
file.truncate(size):把文件裁成规定的大小,默认的是裁到当前文件操作标记的位置。如果size比文件的大小还要大,依据系统的不同可能是不改变文件,也可能是用0把文件补到相应的大小,也可能是以一些随机的内容加上去。
with open("E:\pythonProject\python笔记\读取\终末之诗.txt","r",encoding='utf-8') as file:
print(file.read(4))
print(file.tell())
file.seek(0)
print(file.readline())
file.seek(0)
list=file.readlines()
for l in list:
print(l)
文件删除
python里文件删除需要用到os库
在删除文件最好检查文件是否存在,不然会报错
os.remove(文件名或地址):删除文件
os.rmdir(文件名或地址):删除文件夹,此文件夹必须为空
os.listdir(文件名或地址):获取目录中存在的文件列表
shutil.rmtree(文件名或地址):删除目录及其所有内容。
其他
对于csv文件和excel文件的处理与其他文件有些许差别
#csv
csv.writer(file,dialect="excel")
#使用python的csv生成excel所兼容的csv文件
file.writerow()
#将一个列表全写入csv文件的同一行
file.writerows()
#将一个二维列表的每一个列表写入csv文件的一行
#excel
like=xlwt.Workbook(encoding="utf-8")
#创建一个一个工作簿/excel
row=sheet.row_values(number)
#获取整行或者整列的值
sheet.cell(1,0).value.encode('utf-8')
#获取单元格内容
sheet=like.add_sheet("student")
#添加sheet表
sheet.write(行,列,信息)
#写入数据
like.save("test.xls")
#保存
xlrd.open_workbook(r"test.xls")
#打开
具体的excel操作以后会在详细总结