python - 运行 django 测试时 csv 文件为空

标签 python file csv

这是一个奇怪的问题,我有一个读取 csv 文件的方法,因此我为其创建了一个单元测试,就像这样简单:

def test_csv(self):
    with open(self.csv_file_path, 'rb') as csv_file:
        response = csv_parser_method(csv_file)
        assert response here

因此,如果我在那里添加 pdb 断点并检查 self.csv_file_path 文件的内容,它是空的

(Pdb) import csv
(Pdb) reader = csv.reader(csv_file, delimiter=str(','))
(Pdb) [row for row in reader]
[]

这很奇怪,如果我打开一个普通的 shell,它有内容,当然文件也有内容......

最佳答案

您的 csv_parser_method 已读取整个 CSV 文件,因此 csv_file 文件对象的指针已位于文件末尾,因此当您使用 csv.reader 尝试读取它,但它什么也没得到,因为文件末尾的位置之后没有更多内容。

您可以使用 seek 方法将文件指针重置回文件开头,以便 csv.reader 可以读取该文件:

csv_file.seek(0)
reader = csv.reader(csv_file, delimiter=str(','))

关于python - 运行 django 测试时 csv 文件为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55126486/

相关文章:

php - 检查文件是 JPEG、PDF 还是 TIFF

java - java中锁定文件

php - 抓取完整网站以获取特定 div 标签内的数据,其中 url 包含字符串

Excel 错误地将范围转换为日期,如何避免?

python - 在python中追加错误

python - 如何管理大文件?

javascript - 流模式下的流子进程输出

c - 替换文件中的字符串 - C

ruby-on-rails - 如何从ruby on Rails和nodejs中的csv文件读取第2张表

python - 在 Windows 上运行带有子进程的 R 脚本,子进程似乎丢失