简体   繁体   English

Python脚本未从Django Shell运行

[英]Python Script not running from django shell

I'm running a Python script from the Django shell. 我正在从Django Shell运行Python脚本。 It was working fine until I added a main() function. 在我添加main()函数之前,它一直工作良好。 Now it does not work. 现在不起作用。 When I execute the script, nothing happens (no errors or anything). 当我执行脚本时,什么也没有发生(没有错误或任何东西)。 What am I doing wrong? 我究竟做错了什么?

From the Django shell, I execute the script like this: execfile('create_xml.py') 在Django Shell中,我像这样执行脚本: execfile('create_xml.py')

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 datasets\t2: Public datasets only\t3: 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()

This happens because because __name__ == '__main__' is True only when the python interpreter is running the file as the program. 发生这种情况是因为__name__ == '__main__'仅在python解释器将文件作为程序运行时才为True Try printing __name__ in the program and then execfile() it after changing the comparison. 尝试在程序中打印__name__ ,然后在更改比较后执行execfile() You'll figure out the __name__ variable. 您将找出__name__变量。 Check What does if __name__ == "__main__": do? 检查__name__ ==“ __main__”怎么办?

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM