Python脚本未从django shell运行



我正在Django shell中运行一个Python脚本。它一直运行良好,直到我添加了main()函数。现在它不起作用了。当我执行脚本时,不会发生任何事情(没有错误或任何事情(。我做错了什么?

在Django shell中,我执行如下脚本:execfile('create_xml.py')

create_xml.py:

import os
import unicodedata
from django.conf import settings
from django.template.loader import render_to_string
from databank.models import Registration
def create_xml(registrations):
    for registration in registrations:
        xml = render_to_string('databank/metadata.xml', {'registration': registration})
        filename = "metadata%s.xml" % (registration.dataset.dataset_id)
        file_path = settings.XML_DATA_FILES
        with open(os.path.join(file_path, filename), 'w') as f:
            f.write(xml.encode('UTF-8'))
def main():
    while True:
        print "For which datasets would you like to create XML files?"
        dsid = input("1: All datasetst2: Public datasets onlyt3: A specific dataset- ")
        if ds == 1:
            # all datasets
            print "Creating XML files for all datasets."
            registrations = Registration.objects.all()
            create_xml(registrations)
            print "All done!"
        elif ds == 2:
            # only public datasets
            print "Creating XML files for public datasets only."
            registrations = Registration.objects.filter(dataset__status='public')
            create_xml(registrations)
            print "All done!"
        elif ds == 3:
            dsid = input("Please input a dataset id: ")
            try:
                r = Registration.objects.get(dataset__dataset_id=dsid)
                print "Creating XML file for dataset %d." % (dsid)
                registrations = [r]
                create_xml(registrations)
                print "All done!"
            except:
                print "Not a valid dataset id. please try again."
        else:
            print "Not a valid option."
if __name__ == "__main__":
    main()

之所以会发生这种情况,是因为只有当python解释器将文件作为程序运行时,__name__ == '__main__'才是True。尝试在程序中打印__name__,然后在更改比较后打印execfile()。您将计算出__name__变量。检查如果__name__==&quot__main__":做

相关内容

  • 没有找到相关文章

最新更新