Python Can';不要填写数据文件
我在django工作。我需要填写数据库中的文本文件数据。在数据库中搜索数据并更改其工作的过程,如果我使用print进行调试,变量不是空的。它们包含来自数据库的数据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(
# 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
或者,它既不执行except也不执行else子句。因此,我的建议是,通过在这些else子句中实际打印一些内容到console/log,来检查是否引发了任何异常。DoesNotExist
[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')