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的结果

 

 

 

猜你喜欢

转载自blog.csdn.net/wtwcsdn123/article/details/81103403