首页 新闻 会员 周边

python 同时使用多个with open 读内容第一个数据会丢失

0
[已解决问题] 解决于 2020-06-13 21:07

如题,使用多个with open读txt到集合中的时候,如果超过了3个with open,第一个的集合中内容就会丢失一小半。。

def readConfig(filename):
result = []
with open(filename,'r',encoding='utf-8') as fp:
result.append(fp.read())
return result

因要同时读取多个txt文件,而每个txt里的内容,行数不固定,所以def一个函数,但是传进去多个文件名,返回的数据中,第一个集合的数据少了一小半,哪怕是文件名跟后面三个一样的。。
而且只有第一个集合的数据有影响,后面三个没问题

lixia7的主页 lixia7 | 初学一级 | 园豆:6
提问于:2020-05-26 16:31
< >
分享
最佳答案
0

Python采用传对象引用的方式,列表是一个可变的数据,你应该在读取前创建result列表,调用readConfig时传入列表,代码如下:

def readConfig(filename, li):
	with open(filename,'r',encoding='utf-8') as fp:
		li.append(fp.read())


files = ["test1.txt", "test2.txt", "test3.txt"]
result = []
for i in files:
	readConfig(i, result)
print(result)

运行后得到的结果是:

['我是test1.txt的内容', '我是test2.txt的内容', '我是test3.txt的内容']
奖励园豆:5
Re-Ch | 初学一级 |园豆:200 | 2020-06-06 18:31
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册