51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

查看: 1354|回复: 3

[Python测试开发全栈班] 读取csv的文件方法时去除了文件的第一行内容,但是我的表格里都是注册用户的信息

[复制链接]

该用户从未签到

发表于 2019-5-22 12:08:06 | 显示全部楼层 |阅读模式
import csvdef file_read(filename):    path = '../test_data_1/' + filename    with open(path) as file:    # file = open('../test_data_1/' + filename)        table = csv.reader(file)    return tabletable = file_read('regdata.csv')for row in table:    print(row)
报错信息:
for row in table:
ValueError: I/O operation on closed file


在学课程
Python测试开发全栈核心课程 互联网测试工程师必修课

回复

使用道具 举报

该用户从未签到

发表于 2019-5-22 14:32:26 | 显示全部楼层
命令不能混搭呵,你前面用了with,后面就不能用csv.reader

with open(path,"r") as file:
    table=file.read()
这样是可以的,要用csv.reader,就用我课上的方法file=open(.......)
回复 支持 反对

使用道具 举报

该用户从未签到

 楼主| 发表于 2019-5-22 14:35:43 | 显示全部楼层
使用with是想文件自动关闭。如果用file.read()的话,这样输出就不是按预期的一个cell一个cell输出的,而是一个字符一个字符输出的。我这边上传一下老师的代码 1.png

回复 支持 反对

使用道具 举报

该用户从未签到

发表于 2019-5-22 14:39:39 | 显示全部楼层
csv.reader()方法返回的数据保存在内存中,关闭文件时,会清空内存。这样就导致table中的数据被清空了,所以要声明一个list作为中间变量,保存csv文件中的值。



import csv


def file_read(filename):

    list=[]
    path = '../test_data_1/' + filename
    with open(path) as file:
    # file = open('../test_data_1/' + filename)
        table = csv.reader(file)

        for row in table:

             list.append(row)
    return list


table = file_read('regdata.csv')
for row in table:
    print(row)
回复 支持 反对

使用道具 举报

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

GMT+8, 2024-3-29 20:20 , Processed in 0.069954 second(s), 26 queries .

Powered by Discuz! X3.2

© 2001-2024 Comsenz Inc.

快速回复 返回顶部 返回列表