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']]