如题,使用多个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一个函数,但是传进去多个文件名,返回的数据中,第一个集合的数据少了一小半,哪怕是文件名跟后面三个一样的。。
而且只有第一个集合的数据有影响,后面三个没问题
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的内容']