• Python笔记---错误笔记


    Python---错误笔记

    1. Python编码问题:

    我们在编写 Python 脚本时,往往会写上中文凝视。

    可是有时候,当我们执行程序时。却发现例如以下错误:SyntaxError: Non-ASCII character 'xe5' in file /home/johnnie/Files/Workspace/python/head_first/chapter2/nester.py on line 7, but no encoding declared; see http://python.org/dev/peps/pep-0263/ for details.

      出现原因:就是中文编码的问题
    解决方式:
    法1:在文件里开头添加例如以下:
    #!/usr/bin/python  或 者  #!user/bin/env python

    #encoding=utf-8


    # -*- coding: utf-8 -*-       # 推荐这样的方式:能够解决模块间导入中文的问题,建议每次都写上
    [注意的是声明的编码必须与文件实际保存时用的编码一致,否则非常大几率会出现代码解析异常。

    如今的IDE通常会自己主动处理这样的情况,改变声明后同一时候换成声明的编码保存,但文本编辑器控们
    须要小心]

    2. Python文件读取时出现的错误:

    在执行 read_file.py 程序时,遇到一个错误:need more than 1 value to unpack
    出现
    原因: line.split(":", 1) 这一语句造成的错误  
    解决方式:我们应该查看我们所要读取的文件是否有末尾有空行,将空行删除就可以
    read_file 程序代码:
    #!/usr/bin/python
    #encoding=utf-8
    # Filename: read_file.py
    # 读取数据
    
    import os
    
    data_path = "/home/johnnie/文档/Workspace/python/data/sketch.txt"
    
    if os.path.exists(data_path):
        data = open(data_path)
        while True:
            for line in data.readlines():
                if len(line) == 0:
                    break
                else:
                    # 添加一逻辑推断: 查看当前数据行是否包括 ":" 字符,若包括。则切割数据
                    # find(): 找出一个字符串中的子串,若没找到,则返回 -1
                    # not: 对表达式取反
                    if not line.find(":") == -1:
                        try:
                            (role, msg) = line.split(": ", 1)
                            print ("{0} said:{1}").format(role, msg)
                        except ValueError:
                            pass
        data.close()
    else: # IOError
        print "The data file is missing!"

    3. Python 的 Web server执行 CGI 脚本报 FileNotFound 的错误:

        当 Web server执行 CGI 脚本遇到 FileNotFoundError: [Errno 2] No such file or directory 时,不要急,先查看:
        1). 是否真的有该 CGI 脚本?
        2). 是否给予该脚本可执行权限?
        3). 最easy疏忽的一部就是: CGI 脚本的首行必须加上例如以下代码:
    #!/usr/bin/python 或 #!/usr/bin/python3  而不是 #!usr/bin/python  [注意: usr前面另一个左斜线。!

    。!]


    4. Django 模板中使用 {%url%}标签报错:

        在 Django 的模板文件 blog_detail.html 中的 <a> 标签的 href 属性中使用 {% url %} 标签,出现例如以下错误:arguments '()' and keyword arguments '{}' not found.....
        源码片段。根文件夹下的 urls.py:
    urlpatterns = [
    		......,
    		url(r'^sblog/blog_details/(d+)', 'sblogs.views.blog_detail'),
    	]
        blog_details.html:
    ....
    <a href = "{% url 'sblog/blog_details' blog.id %}">....</a>
        出现原因:
            配置 urls 和 标签的使用有误。

    首先,对于使用 {% url %} 标签时,推荐使用的是对于每个 app,都在
    该 app 文件夹下新建一个 urls.py 的文件,对该 app 的 url 进行管理。

    且应该将 url 定义为例如以下形式:url(r'^accounts/logout/$', logout_view, name = 'logout_view')

        解决方式:
            1) 改动根文件夹下的 urls.py:
    urlpatterns = [
    	url(r'^admin/', include(admin.site.urls)),
    	url(r'^$', 'blog.views.home', name="home"),    
    	    
    	# 以递归的方式来配置 url: sblog 下配置了一个 urls.py
        url(r'^sblog/', include('sblog.urls')),
    ]
            2) 在 app 下新建 urls.py:
    urlpatterns = patterns(('sblog.views'),
    	                url(r'^blog_list', "blog_list", name="blog_list"),
    		            url(r'^blog_detail/(d+)', 'blog_detail', name="blog_detail"),
    		            )
            3) 改动 blog_detail.html 文件:
    <a href="{% url 'blog_detail' blog.id %}">{{blog.caption}}</a>



  • 相关阅读:
    【C++ 系列笔记】03 C++ 面向对象进阶
    【C++ 系列笔记】02 C++ 面向对象基础
    【C++ 系列笔记】01 C++ 与 C
    【JavaScript】简单取随机数 ~~(Math.random() * number)
    英语测试
    Linux指令入门
    RE-攻防世界 T3 insanity
    PWN-攻防世界 level0
    ISCC不会的理论题
    kali linux配置ssh
  • 原文地址:https://www.cnblogs.com/llguanli/p/8378608.html
Copyright © 2020-2023  润新知