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 服务器运行 CGI 脚本报 FileNotFound 的错误:

    当 Web 服务器运行 CGI 脚本遇到 FileNotFoundError: [Errno 2] No such file or directory 时,不要急,先查看:
    1). 是否真的有该 CGI 脚本?
    2). 是否给予该脚本可执行权限?
    3). 最容易疏忽的一部就是: 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>



你可能感兴趣的:(python,错误笔记)