python基础 & 读写文件

主宰稳场 提交于 2020-03-11 01:16:54

1、open函数用来打开文件

  • open(name[, mode[, buffering]]) 打开文件可传的参数
  1. open函数使用一个文件名作为唯一的强制参数,然后返回一个文件对象。
  2. 模式(mode)和缓冲(buffering)参数都是可选的
  • 打开文件的模式有

    • r,只读模式(默认)。

    • w,只写模式。【不可读;不存在则创建;存在则删除内容;】

    • a,追加模式。【可读; 不存在则创建;存在则只追加内容;】

    • : “+” 表示可以同时读写某个文件

      • w,只写模式。【不可读;不存在则创建;存在则删除内容;】

      • w+,写读

      • a+,同a

  • with语句

    • 作用:将打开文件写在with中当对文件操作完成后with语句会自动帮关闭文件,避免忘记写f.close()
with open("data1.txt",'r',encoding = 'utf-8') as f:
    for line in f:
        print(line)

2、三种读操作比较

  1. readline()每次读取一行,当前位置移到下一行

  2. readlines()读取整个文件所有行,保存在一个列表(list)变量中,每行作为一个元素

  3. read(size)从文件当前位置起读取size个字节,如果不加size会默认一次性读取整个文件(适用于读取小文件)

#1. read()一次读取所有内容
'''aaa111
bbb222'''
f = open(r"data.txt")
print(f.read())
f.close()

#2. readline(),每次只读取一行,光标下移
'''
0: aaa111

1: bbb222
'''
f = open(r"data.txt")
for i in range(2):
    print(str(i) + ": " + f.readline(),)

#3. 一次读取所有,每行作为列表的一个值
'''['aaa111\n', 'bbb222\n']'''
f = open(r"data.txt")
print(f.readlines())

3、使用read()读文件

1. read(n)读取指定长度的文件

f = open(r"somefile.txt")
print(f.read(7))        # Welcome        先读出 7 个字符
print(f.read(4))        #‘ to ‘                接着上次读出 4 个字符
f.close()

2. seek(offset[, whence]) 随机访问
 
 作用:从文件指定位置读取或写入

f = open(r"somefile.txt", "w")
f.write("01234567890123456789")
f.seek(5)
f.write("Hello, World!")
f.close()
f = open(r"somefile.txt")
print(f.read())                 # 01234Hello, World!89

3. tell 返回当前读取到文件的位置下标

f = open(r"somefile.txt")
f.read(1)
f.read(2)
print(f.tell())             # 3     3就是读取到文件的第三个字符

4、readline()读文件

作用:readline 的用法,速度是fileinput的3倍左右,每秒3-4万行,好处是 一行行读 ,不占内存,适合处理比较大的文件,比如超过内存大小的文件

f1 = open('test02.py','r')
f2 = open('test.txt','w')
while True:
    line = f1.readline()
    if not line:
        break
    f2.write(line)
f1.close()
f2.close()

5、readlines()读文件

作用:readlines会把文件都读入内存,速度大大增加,但是木有这么大内存,那就只能乖乖的用readline

f1=open("readline.txt","r")
for line in f1.readlines():
    print(line)

6、将data1.txt中内容读取并写入到data2.txt中

f1 = open('data1.txt','r')
f2 = open('data2.txt','w')

for line in f1:
    f2.write(line)

f1.close()
f2.close()

7、使用eval()方法将文件读取成字典

f = open('data1.txt')
f1 = (f.read())
data = eval(f1)
f.close()
print(data)         # 运行结果: {'k2': 'v2', 'k3': 'v3', 'k1': 'v1'}

8、将文件内容读取成列表

lock = []
f = open("password.txt")
for name in f.readlines():
    lock.append(name.strip('\n'))
print(lock)
运行结果: ['aaa 111', 'bbb 222', 'ccc 333']
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!