Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Can';不要填写数据文件_Python_Django_File_Csv - Fatal编程技术网

Python Can';不要填写数据文件

Python Can';不要填写数据文件,python,django,file,csv,Python,Django,File,Csv,我在django工作。我需要填写数据库中的文本文件数据。在数据库中搜索数据并更改其工作的过程,如果我使用print进行调试,变量不是空的。它们包含来自数据库的数据 # encoding: utf-8 # !/usr/bin/python from django.core.management.base import BaseCommand import os from core.db import KeyStore, Fingerprints import csv class Command(

我在django工作。我需要填写数据库中的文本文件数据。在数据库中搜索数据并更改其工作的过程,如果我使用print进行调试,变量不是空的。它们包含来自数据库的数据

# encoding: utf-8
# !/usr/bin/python

from django.core.management.base import BaseCommand
import os
from core.db import KeyStore, Fingerprints
import csv
class Command(BaseCommand):
    help = u"Переименование файлов кейсторов и обновление данных о них в БД."

    def handle(self, *args, **options):
        success_csv = 'success_log.csv'
        error_csv = 'error_log.csv'
        [OUTPUT IN FILE]
        with open(success_csv, 'w') as f:
            f.write('Id;Alias;Old keystore;New keystore;\n')
        [OUTPUT IN FILE]
        with open(error_csv, 'w') as f:
            f.write('Keystore;\n')

        path = '/home/anton/PycharmProjects/apps-ittop-mobi/src/media/keystores'
        list_of_files = os.listdir(path)
        count_of_files = len(list_of_files)
        os.chdir(path)
        for i in range(0, count_of_files):
            old_keystore = 'keystores/%s' % list_of_files[i].encode('utf-8')
            try:
                keystore = KeyStore.objects.get(keystore=old_keystore)
            except(ValueError, KeyStore.DoesNotExist):
                keystore = None
                [NOT OUTPUT IN FILE]
                with open(error_csv, 'a') as f:
                    f.write('%s\n' % old_keystore)
            else:
                try:
                    fingerprints = Fingerprints.objects.get(keystore_id=keystore.pk)
                except(ValueError, Fingerprints.DoesNotExist):
                    fingerprints = None
                else:
                    new_keystore = '%s__%s__.keystore' % (keystore.alias, keystore.keypass)
                    keystore.keystore = 'keystores/%s' % new_keystore
                    keystore.save()
                    fingerprints.save()
                    [NOT OUTPUT IN FILE]
                    with open(success_csv, 'a') as f:
                        f.write('%s;%s;%s;%s;\n' % (keystore.pk, keystore.alias, old_keystore, keystore.keystore))

                    os.rename(os.path.join(path, list_of_files[i]), os.path.join(path, new_keystore))
即使我替换:

[NOT OUTPUT IN FILE]
with open(error_csv, 'a') as f:
    f.write('%s\n' % old_keystore)

文件中没有写入任何内容。尽管这些代码部分可以工作:

[OUTPUT IN FILE]
with open(success_csv, 'w') as f:
       f.write('Id;Alias;Old keystore;New keystore;\n')
[OUTPUT IN FILE]
       with open(error_csv, 'w') as f:
            f.write('Keystore;\n')

文件中没有填充数据的原因是什么?

首先,那些
[未在文件中输出]
是否实际在文件中?我认为他们应该给出语法错误。如果它们只是注释,请使用
#
将它们表示为注释。接下来,请确认执行了
else
块中的代码(例如,通过调试打印)。此外,平展try expect else结构,打开顶部的文件处理程序并保持其打开状态,直到完成为止-不要在循环中关闭和重新打开它们。@J0HN'[不在文件中输出]“我在代码中专门为您做的这些注释不是。为了更容易理解数据输出到文件的位置和不输出到文件的位置。如果一切都成功,我们将转到else。只有在未引发异常的情况下才会命中
else
子句。如果存在除
ValueError或者,
DoesNotExist
它既不执行except也不执行else子句。因此,我的建议是,通过在这些else子句中实际打印一些内容到console/log,来检查是否引发了任何异常。
[OUTPUT IN FILE]
with open(success_csv, 'w') as f:
       f.write('Id;Alias;Old keystore;New keystore;\n')
[OUTPUT IN FILE]
       with open(error_csv, 'w') as f:
            f.write('Keystore;\n')