python读写文件操作

 文本文件

文本文件打开与关闭

方式一

f = open('文件路径', '文件操作方式', encoding='utf-8')

        对文件进行操作

f.close()

方式二

使用Python的上下文管理器:

with open('文件路径', '文件操作方式', encoding='utf-8') as f:

        对文件进行操作

这里有一个参数“encoding”,它可以在打开文件的时候将文件转换为UTF-8编码格式,从而避免乱码的出现。这个参数只有Python 3有,在Python 2中使用这个参数会报错。如果文件是在Windows中创建的,并且使用UTF-8打开文件出现了乱码,可以把编码格式改为GBK。

文件常见操作方式有 读(r) 写(w) ,默认以只读的方式打开

文件操作方式

        w--读写

with open('文件路径', 'w', encoding='utf-8') as f:

        对文件进行操作

        r--只读

with open('文件路径', 'r', encoding='utf-8') as f:

        对文件进行操作

        a--追加

with open('文件路径', 'a', encoding='utf-8') as f:

        对文件进行操作
对比:

1种方式需要手动关闭文件,但是在程序开发中经常会出现忘记关闭文件的情况。第2种方法不需要手动关闭文件,只要代码退出了缩进,Python就会自动关闭文件。

文本文件读操作
f.readlines()

按行读取文件内容

f.read()

直接将文件内容用一个字符串返回

文本文件写操作
f.write()

参数为一个字符串,直接将一大段字符串写入到文本中

f.writelines()

参数为一个列表,把列表里面的所有字符串写入到文本中

注意事项

写列表的时候,Python写到文本中的文字是不会自动换行的,需要人工输入换行符才可以

CSV文件操作

读操作

CSV文件本质上是文本文件,所以操作csv文件需要先以文本文件方式打开,再将文件对象传递给CSV模块

eg:

import csv

with open('result.csv', encoding='utf-8') as f:
  reader = csv.DictReader(f)
  for row in reader:
    print(row)

结果:

 for循环得到的rowOrderedDict(有序字典)

如果想在文件关闭后读取内容,只需要借助列表推导式将内容存储在一个列表中即可

import csv

with open('result.csv',encoding='utf-8')as f:
    reader [x for x in csv.DictReader(f)]

for row in reader:
    #对列表数据的操作
写操作

根据需要写入的数据类型和难易程度选择以下两种方式:

准备字典类型的数据,包含字典的列表也可以

import csv

data = [{'name': 'kingname', 'age': 24, 'salary': 99999},
        {'name': 'meiji', 'age': 20, 'salary': 100},
        {'name': '小明', 'age': 30, 'salary': 'N/A'}]
with open('new.csv','w',encoding='utf-8')as f:
    #写入列名
    writer = csv.DictWriter(f,fieldnames=['name','age','salary']
    writer.writeheader()
    #写入数据
    writer.writerows(data) #多行写入
    writer.writerow({'name':'超人','age':999,'salary':0}) #写入一行

直接以列表嵌套的方式插入数据,示例:

import csv

data = [['kingname', 24, 99999],
        ['meiji', 20, 100],
        [ '小明', 30, 'N/A']]
with open('new.csv','w',encoding='utf-8')as f:
    writer = csv.writer(f)
    #写入列名
    writer.writerow(['name','age','salary'])
    #写入数据
    writer.writerows(data) #多行写入

  • 9
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值