将+ 10GB .csv文件分割成相等的部分,而无需读入内存

时间:2018-10-28 04:51:30

标签: python sql r csv ram

我有3个10GB以上的文件,需要分成6个较小的文件。我通常会使用R之类的东西来加载文件并将其分区为较小的块,但是文件的大小会阻止将它们读入R中-即使有20GB的RAM。

我在接下来的工作上遇到了麻烦,不胜感激任何提示。

1 个答案:

答案 0 :(得分:0)

在python中,不要使用生成器/迭代器将所有数据加载到内存中。

只需逐行阅读。

Csv库为您提供了一个读写器类,可以完成这项工作。

要分割文件,您可以编写如下内容:

class UserProfile(AbstractUser):
    student_num = models.CharField(unique=True, null= False, max_length=9)
    birthday = models.DateField(verbose_name='生日', null=True, blank=True)
    gender = models.CharField(max_length=5, choices=(('male', '男'),('female', '女')), default='female')
    address = models.CharField(verbose_name='地址', max_length=100, blank=True, null=True)
    city = models.CharField(verbose_name='城市', max_length=20, default='Windsor')
    province = models.CharField(max_length=20, verbose_name='省', default='ON')
    zip_code = models.CharField(max_length=6, verbose_name='post code',blank=True, null=True )
    mobile = models.CharField(max_length=10, null=True, blank=True)
    enter_date = models.DateField(verbose_name='入学时间', blank=True, null=True)

    class Meta:
        verbose_name = 'StudentInfo'
        verbose_name_plural = verbose_name

    def __str__(self):
        return self.username

我没有测试过,写在脑海中,所以,错误可能存在:)