программа просто генерирует файлик с нужным кол-во столбцов и строк, данные ячеек соотвествуют типу столбцов..
код выложил чисты, без всех извращений которые пробовал
#!/usr/bin/env python # -*- coding: utf-8 -*- import random import codecs class Generator: def __init__(self, col, row, length, enc): self.col = col self.row = row self.length = length self.enc = enc self.csvTypeOfData = ["Date", "String", "Integer", "Float"] self.allChar = u'йцукенгшщзъфывапролджэячсмитьбю' def genStr(self): length = random.randint(1, self.length) rStr = '' while length > 0: rStr += random.choice(self.allChar) length -= 1 return rStr def genDate(self): day = random.randint(1, 31) month = random.randint(1, 12) year = random.randint(60, 99) date = str(day) + '/' + str(month) + '/' + str(year) return date def genInteger(self): return random.randint(1, 1000000) def genFloat(self): return random.randint(1, 1000) * random.random() def genHeadCsv(self): headOfCsv = [] count = 0 while count < self.col: nameCol = self.genStr() typeCol = random.choice(self.csvTypeOfData) self.colsType.append(typeCol) colNameType = nameCol + ' ' + typeCol headOfCsv.append(colNameType) count += 1 headOfCsv = '; '.join(headOfCsv) return headOfCsv def Start(self, outfile): self.colsType = [] headCsv = self.genHeadCsv() outfile=codecs.open('outfile.txt','a','utf8','ignore') #outfile = open(outfile, 'a') #outfile.write(headCsv) count = 0 rowData = [] while self.row > count: for csvType in self.colsType: if (csvType == 'Date'): cell = self.genDate() rowData.append(cell) elif (csvType == 'Integer'): cell = self.genInteger() rowData.append(cell) elif (csvType == 'Float'): cell = self.genFloat() rowData.append(cell) elif (csvType == 'String'): cell = self.genStr() rowData.append(cell) rowData = '; '.join(str(cell) for cell in rowData) #rowData = unicode(rowData, 'cp866') #rowData = rowData.encode('utf8') outfile.write(rowData+'\n') rowData = [] count += 1 outfile.close()
Хоть решение и помогло, я не прочь посмотреть на Ваш вариант.