python 文件操作

读取文件:r,只读不能写,文件不存在报错

#打开文件
 file_object=open('log.txt',mode="r", encoding='utf-8')#读取:mode为r,只读不能写,文件不存在,报错
# 读取内容,
 content=file_object.read()
 print(content)
#关闭文件
 file_object.close()

写入文件:w,只写不能读(先清空文件),文件不存在则新建

#打开文件
 file_object=open('looooog.txt',mode="w", encoding='utf-8')#mode为 w,write(只写,先清空,一般用于新建文件)
#写内容
file_object.write("李伟")
#关闭文件
file_object.close()

写入文件:a只追加不能读,文件不存在新建


#打开文件
file_object=open('log.txt',mode="a", encoding='utf-8')#写入:a,只在尾部追加不读,文件不存在新建
#写内容
v=file_object.write("您好啊")
#关闭文件
file_object.close( )
 

可读可写
读取,写入:r+,从文件头开始写,保留原文件中没有被覆盖的内容

file_object = open('log.txt',mode='r+',encoding='utf-8')
file_object.seek(2) # 调整光标的位置,2表示2字节

content = file_object.read()#读当前光标后面的内容
file_object.write('')

# 读取内容content = file_object.read()print(content)file_object.write('666')#末尾添加666

#关闭文件
file_object.close()

可读可写

w+,打开可读写文件,若文件存在则文件长度清为零,即该文件内容会消失。若文件不存在则建立该文件。

写入时会将文件清空,读取时需要调整光标

 

file_object = open('log.txt',mode='w+',encoding='utf-8')
data = file_object.read()
print(data)
file_object.write('alex')
file_object.seek(0)
data = file_object.read()
print(data)
file_object.close()
可读可写:a+,默认追加时光标永远在最后
file_object = open('log.txt',mode='a+',encoding='utf-8')

# file_object.seek(0)
# data = file_object.read()
# print(data)

file_object.seek(0)#即使光标移到最前面
file_object.write('666')#写仍追加到最后

file_object.close()
读操作
file_object = open('log.txt',mode='r',encoding='utf-8')

# 读取文件的所有内容到内存
# data = file_object.read()

# 从当前光标所在的位置向后读取文件两个字符
# data = file_object.read(2)

# 读取文件的所有内容到内存,并按照每一行进行分割到列表中。
# data_list = file_object.readlines()
# print(data_list)

# 如果以后读取一个特别大的文件 (**********)
# for line in file_object:
#     line = line.strip()#除去里面的换行
#     print(line)

# file_object.close()

写操作

file_object = open('log.txt',mode='w',encoding='utf-8')
file_object.write('asdfadsfasdf\n')
file_object.write('asdfasdfasdfsadf')
file_object.close()

练习题

#!/usr/bin/env python
# -*- coding:utf-8 -*-
# 练习1:请将user中的元素根据 _ 链接,并写入 'a1.txt' 的文件
"""
user = ['alex','eric']
data = "_".join(user)
file_object = open('a1.txt',mode='w',encoding='utf-8')
file_object.write(data)
file_object.close()
"""

# 练习2:请将user中的元素根据 _ 链接,并写入 'a1.txt' 的文件
"""
user = [
    {'name':'alex','pwd':'123'},    # alex|123
    {'name':'eric','pwd':'olbody'}, # eric|olbody
]
file_object = open('a2.txt',mode='w',encoding='utf-8')
for item in user:
    line = "%s|%s\n" %(item['name'],item['pwd'],)
    file_object.write(line)
file_object.close()
"""

# 练习3:请将a2.txt中的文件读取出来并添加到一个列表中 ['alex|123','eric|olbody']
# 方式一
"""
file_obj = open('a2.txt',mode='r',encoding='utf-8')
content = file_obj.read()
file_obj.close()
content = content.strip()
data_list = content.split('\n')
print(data_list)
"""

"""
result = []
file_obj = open('a2.txt',mode='r',encoding='utf-8')
for line in file_obj:
    line = line.strip()
    result.append(line)
file_obj.close()
print(result)
"""

总结

注意:读取文本文件时,Python将其中的所有文本都解读为字符串,如果你读取的是数字,必须使用int()将其转换

- 打开
  - r,只能读。 【**- w,只能写,写之前清空。 【**- a,只能追加。【*- r+
    - 读:默认从0的光标开始读。也可以通过 seek 调整光标的为位置。
    - 写:若光标在0位置,则会覆盖0光标后面的字,从光标所在的位置开始写,也可以通过 seek 调整光标的位置。
  - w+
    - 读:默认光标永远在写入的最后或0,也可以通过 seek 调整光标的位置。
    - 写:先清空。
  - a+
    - 读:默认光标在最后,也可以通过 seek 调整光标的位置。然后再去读取。
    - 写:永远写到最后。
  • 操作

      • read()

      • read(2) # 字符

      • readlines()#readlines()从文件中读取每一行,并将其存储在一个列表

    • write

  • 关闭

 

posted @ 2019-07-25 20:58  嘘,在学习呢  阅读(133)  评论(0编辑  收藏  举报