python中读写文件总结

python这个东西真的是仅仅靠看知识点是学不来的, 很多东西看了之后不用,姑且不说你当时能不能真正的可以运用起来,时间一久,忘得一干二净。所以多写写代码,遇到问题多想想方法,不会就Google,就百度,基本上没什么问题是解决不了的,如果说真有,那就是搜索方式的问题了吧。

每天都在坚持学python,出现问题是很正常的,今天写的代码时,遇到了关于python操作文件的知识,现在来说一些吧:

1. open()函数打开文件,如果不想文件不小心被修改了,就用 'r', 如果想写东西进文件,得考虑一个问题,就是你写这个东西进去,是要把之前的文件内容覆盖掉,还是仅仅是添加文件内容,第一种情况的话就用 'w', 第二种情况就用 'a' 。另外要要注意的事,这种打开文件的方式 ,它不会自动关闭文件,所以你必须在结束文件操作时,close()关闭文件。如果你不确定文件是否已经关闭,可以用例如:f.closed,来检查是否关闭,返回True或False。

写入文件内容,write()写txt文件没什么好说的,就讲讲写csv或者写入excel时的几个问题吧:

1)例,这样写入会出TypeError: write() argument must be str, not int这个错误,因为write()只允许写入str型的内容,

ips = [23, 42, 74, 914]
f = open('ids.csv', 'w')
for i in range(len(ips)):
    f.write(ips[i])
f.close()

那如果ips内的元素为['23', '42', '74', '914']的呢,是可以写入,但是可能不是预期的那样,因为它全部写在某一行的某一列里面了,即你将会看到234274914是写在一起的。那么如何才能得到我们想要的,把数据写入不同列呢,那就用 ',', 换行用 '\n',例如:

运行结果为:

2. 第二种打开文件方式,例如:

with open('file.csv', 'a') as f:

第一种方式的最后一个例子就用的是这种打开写入的格式,这种打开方式个人觉得有两个好处,一是文件操作都在该行代码下,这样看起来不会感觉很乱,二是它会在文件操作结束后自动关闭文件,对于老是忘记关闭文件的人来说,很nice。

3. 第三种读取文件的方式,是利用pandas库,读取txt格式文件用pd.read_table('a.txt'),读取csv格式用pd.read_csv('a.csv')

如果想用这个库写入文件内容话,可以利用DataFrame()来实现,而且这种方法还可以为列加上标签,例如

a = [11,22,33,47,92,1]

b = [89,52,63,25,63,72]

c = [93,53,25,38,34,732]

import pandas as pd

dataframe = pd.DataFrame({'这是a':a,'这是b':b,'这是c':c})

dataframe.to_csv('a.csv', index = False, encoding = 'gb2312')  # index=False表示不引入序列号
 # encoding可以解决写入中文乱码的问题

现在来解释一下这个代码,第4行中DataFrame内为一字典型,注意,这种方式写入时,比如a列表,其实它的内容是写在了一列中的,可以理解为以列写入的吧,字典的键就是之前说的一个标签。

再强调一下,中文乱码的或者应该说编码的问题是学习python所不能忽视的,这儿的encoding = 'gb2312'可以很好的解决写入时中文乱码的问题,当然,'utf-8'也没问题。下面附上结果吧,分别 是index = False, 和 index = True的结果

 

 

另外还有一些与文件读写有关的库,可以解决很多的麻烦,详细介绍请移步文件读写之json,pickle,shelve库的使用

  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

大骨熬汤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值