在两个csv文件之间复制内容django

时间:2015-06-02 09:17:11

标签: python django csv

我试图将csvfile的内容复制到csvfile2。我无法看到有关此主题的任何帮助。我还想在value的第一行添加值csvfile2。例如:value = 1 输出应该像

`1_dog 1_cat 1_frog `

value=2结果应为

2_dog 2_cat 2_frog

值介于1和csv文件中的总行数之间。(totalrows

我的试用代码:

def csvupload(request, template_name='upload_csv.html'):

if request.method == 'POST':
    form = CSVUploadForm(request.POST, request.FILES)
    if form.is_valid():
        error_list = set()
        value = 1
        csvfile = request.FILES['file']
        file_name = csvfile.name
        file_name = unicodedata.normalize('NFKD', file_name).encode('ascii','ignore')
        csvfile2 = settings.MEDIA_ROOT + '/new/sample.csv'
        writer = csv.writer(outfile, dialect='excel')
        csvfile.open()
        line_entries = csv.DictReader(csvfile, dialect='excel')
        try:
            csvfile.read()
            line_entries = csv.DictReader(csvfile, dialect='excel', delimiter=',')
            rows1 = list(csvfile)
            totalrows = len(rows1)
            success = True
        except:
            messages.error(request, "Could not parse file, invalid format")
            success = False
            return redirect('home')


        if success:
            messages.success(request, "File read..")
        else:
            for err in error_list:
                messages.error(request, err)
    else:
        messages.error(request, "No file selected")
else:
    form = CSVUploadForm()
context = {
    'form': form
}
return render_to_response(template_name, context, context_instance=RequestContext(request))

这段代码不完整。我是python的新手,很困惑。有人帮忙吗?

1 个答案:

答案 0 :(得分:0)

我没有方便的python口译员所以我无法测试。我可以在以后提供更完整的答案。

你需要这样的东西 -

阅读 -

somename

写 -

>>> import csv
>>> with open('names.csv') as csvfile:
...     reader = csv.DictReader(csvfile)
...     for row in reader:
...         print(row['first_name'], row['last_name'])

因此,首先,将文件保存在服务器的临时位置 -

import csv

with open('names.csv', 'w') as csvfile:
    fieldnames = ['first_name', 'last_name']
    writer = csv.DictWriter(csvfile, fieldnames=fieldnames)

    writer.writeheader()
    writer.writerow({'first_name': 'Baked', 'last_name': 'Beans'})
    writer.writerow({'first_name': 'Lovely', 'last_name': 'Spam'})
    writer.writerow({'first_name': 'Wonderful', 'last_name': 'Spam'})

然后加载它并按照文档中提到的逐行读取。 https://docs.python.org/2/library/csv.html#csv.DictReader

所以你的代码可能就像 -

def handle_uploaded_file(f): # method to save to a temporary location
    with open('some/file/name.csv', 'wb+') as destination:
        for chunk in f.chunks():
            destination.write(chunk)