1、文件打开:变量名=open(文件路径及文件名,模式)
2、文件打开模式:
r(只读模式,文件不存在报错)
w(覆盖写模式:不存在创建文件,存在则覆盖文件)
x(创建写模式:不存在创建文件,文件存在则写失败)
a(追加写模式)
b(二进制文件模式)
t(文本文件模式)
+(在原有功能上增加同时读写功能,与r/w/x/a同时使用)
f = open(r'C:UsershhPycharmProjectsOJsimplea.txt', 'r') f = open('C:/Users/hh/PycharmProjects/OJ/simple/a.txt', 'r+') #路径中为转义符,使用\或者/
3、文件读:
f.read(size=-1):从文件中读入整个文件内容,结果为字符串,参数可选,为读入前size长度的字符串
f.readline(size=-1):从文件中读入一行内容,结果为字符串,参数可选,为读入前size长度的字符串
f.readlines(hint=-1):从文件中读入所有的行,以每行为元素形成一个列表结果为字符串,参数可选,读入hint行
说明:文件打开后,对文件的读写有一个读取指针,当从文件中读入内容后,读取指针将向前进,再次读取的内容将从指针的位置开始
通过f.seek(0)介入文件的指针, 0返回文件开始 2返回文件结尾
f = open('C:/Users/zz/PycharmProjects/OJ/simple/a.txt', 'r+') #路径中为转义符,使用\或者/ print(f.read()) f.seek(0) print(f.readline()) f.seek(0) print(f.readlines()) f.seek(0) print(f.readlines(1)) print(f.readline()) print(f.readline())
循环遍历文件
f = open("b.txt", 'r') #相对路径 for line in f: print(line) f.close()
4、文件写:
f.write(s)向文件写入字符串s,每次写入后,将会记录一个写入指针,该方法可以反复调用,将在写入指针后分批写入内容,直至文件被关闭
f.writelines(lines)直接将列表类型的各元素连接起来写入文件f
f = open('f.txt', 'r+') print(f.read()) f.write("离离原上草,一岁一枯荣, ") f.write("野火烧不尽,春风吹又生。 ") f.seek(0) print(f.read()) f.close() ls = ["离离原上草,一岁一枯荣, ", "野火烧不尽,春风吹又生。 "] f = open('g.txt', 'a+') f.writelines(ls) f.seek(0) print(f.readlines()) f.close()
5、一维数据存储
ls = ["北京", "上海", "广州"] f = open("g.csv", 'w') f.write(','.join(ls))
f = open("g.csv", 'r') ls = f.read() print(ls) ls_new = ls.split(",") f.close() print(ls_new)
北京,上海,广州 ['北京', '上海', '广州']
6、二维数据存储
# 数据存储 ls = [["城市", "上海", "广州"], ["GDP", "100", "200"], ["人口", "100", "200"]] f = open("gh.csv", 'w') for line in ls: f.write(','.join(line) + ' ') f = open("gh.csv", 'r') # 数据恢复 ls = [] for line in f: ls.append(line.strip(' ').split(',')) print(ls) f.close() [['城市', '上海', '广州'], ['GDP', '100', '200'], ['人口', '100', '200']]