【问题标题】:Django - export one txt file per row to local driveDjango - 每行导出一个 txt 文件到本地驱动器
【发布时间】:2022-01-26 21:12:36
【问题描述】:

我一直坚持这一点,因为我在网上找不到任何相关的教程。我愿意

  1. 将模型中的所有数据导出为 txt 文件格式{实际上是 xml,但我认为这不是重点}
  2. 模型中的每一行都是一个单独的文件
  3. 并保存到数据库的相对本地路径
  4. 每个文件夹和文件名都来自模型中的两个字段
  5. 我还需要这些来替换任何现有的同名文件

我该从哪里开始?我目前所能做的就是将所有记录一起导出为可下载附件的 txt 文件。

如果我将其呈现为 HTML 页面,这就是代码的样子,但是当然不会引用文件名和文件夹字段。

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<movie>
  <plot />
  <outline />
  <title>{{ misc.title }}</title>
  <release date>{{ misc.d_released }}</release date>

  </fileinfo>
</movie>

这里是字段

class misc(models.Model):
d_created = models.DateTimeField(auto_now_add=True)
filename = models.CharField(max_length=250)
folder = models.ForeignKey(folder, default="1", blank=True, null=True, on_delete=models.CASCADE)
title = models.CharField(max_length=250, default='', blank=True, null=True)
d_released = models.CharField(max_length=25, default='', blank=True, null=True)
description = models.TextField(blank = True, null = True)

def __str__(self):
    return self.title

class Meta:
    ordering = ('-id', )

【问题讨论】:

  • 嗯,我看到的选项是使用 Django 的视图或忽略 Django 并通过 python 连接到数据库。前者是我要寻求帮助的。

标签: python django


【解决方案1】:

看起来你不需要 Django 来完成这个任务(也许)。

更新:

使用 CSV! 您的 Excel 可以将数据导出到 .csv 文件中 - 这是一种非常简单的格式,并且很容易从 Python 开始。

.csv 放在 python 脚本附近,否则请提供文件的完整路径:

import csv
with open('file.csv', newline='') as csvfile:
    reader = csv.reader(csvfile, delimiter=' ', quotechar='|')
    for row in reader:
        print(', '.join(row))

因此,请检查您是否可以读取行的数据。 Docs

接下来,让我们为您的行创建一个处理程序:

在这里您可以使用 XML 构建器,但这不是一个快速的方法。 让我们制作一个文本模板之类的东西,并将所需的宏替换为您在开始时定义的行的值。

f`text {param}`

最后,如何将它写入文件系统?简单!

首先,如何创建目录或嵌套目录?这里有一个很好的线程:

How can I safely create a nested directory?

所以创建一个需要的目录,然后你可以连接 dir + 需要的文件名来创建一个文件:

with open("full_path_to_future_file.xml", "w") as f:
   f.write(rendered_xml_as_text)

在你的迭代中你可以做的所有这些事情 for row in reader: 循环,当然。

python script.py 这样调用你的脚本,任务就解决了! ?

旧答案:

您能否再次阐明所有带有所需工件的数据管道? 喜欢:

  1. 我在 Excel 中有这样的行...(示例)
  2. 我想读取每一行并...
  3. 我想像这样处理每一行...
  4. 我想将其存储到...中,用于...

?

【讨论】:

    猜你喜欢
    • 2018-10-04
    • 1970-01-01
    • 2018-12-02
    • 1970-01-01
    • 2015-06-11
    • 1970-01-01
    • 2010-09-14
    • 1970-01-01
    • 2023-01-24
    相关资源
    最近更新 更多