学习笔记-Python分册-Head First Python学习随记-错误汇总

【TypeError】
@20170224 TypeError: ‘NoneType’ object is not iterable

import os
import sanitize

james = []

#open the file to get the datas
def get_data(file_name):    os.chdir('/home/shiyy/Documents/HeadFirstPython/chapter5')
    try:
        with open(file_name) as datas:
            data = datas.readline()
            return (data.strip().split(','))
    except FileNotFoundError as ioerr:
        print('File Error: ' + str(ioerr))
        return (None)
james = get_data('james2.txt')
#print(james)        
#调整数据格式
clean_james = [sanitize.sanitize(james_data) for james_data in james]
print(sorted(clean_james))
unique_james = list(set(clean_james))
print(sorted(unique_james))
print(sorted(unique_james)[0:3])

注:
1.‘IOError’异常不能捕获由于文件名错误而导致的异常,‘FileNotFoundError’
2.若文件不存在时该代码会在第18行报‘TypeError: ‘NoneType’ object is not iterable’
【AttributeError】
@20170224 【异常代码】

import os
james = []
def get_data(file_name):
    os.chdir('/home/shiyy/Documents/HeadFirstPython/chapter5')
    try:
        with open(file_name) as datas:
            data = datas.readline()
            return data.strip().split(',')
    except IOError as ioerr:
        print('File Error: ' + ioerr)
        return(None)
james.get_data('james.txt')
print(james)

【错误信息】:

Traceback (most recent call last):
  File "/home/shiyy/Documents/Pythons/chapter5/coach (copy).py", line 12, in <module>
    james.get_data('james.txt')
AttributeError: 'list' object has no attribute 'get_data'

【修改后代码】

import os
james = []


def get_data(file_name):
    os.chdir('/home/shiyy/Documents/HeadFirstPython/chapter5')
    try:
        with open(file_name) as datas:
            data = datas.readline()
            return data.strip().split(',')
    except IOError as ioerr:
        print('File Error: ' + ioerr)
        return(None)
james = get_data('james.txt')
print(james)

注:return data.strip().split(‘,’)调整成return (data.strip().split(‘,’))
【TypeError】
@20170224【异常代码】

import os
import sanitize

james = []

#open the file to get the datas
def get_data(file_name):
    os.chdir('/home/shiyy/Documents/HeadFirstPython/chapter5')
    try:
        with open(file_name) as datas:
            data = datas.readline()
            return data.strip().split(',')
    except IOError as ioerr:
        print('File Error: ' + ioerr)
        return(None)
james = get_data('james.txt')
#print(james)

#调整数据格式
clean_james = [sanitize.sanitize(james_data) for james_data in james]
print(sorted(clean_james))

unique_james = set(sorted(clean_james))
print(unique_james)
print(unique_james[0:3])

【报错信息】

Traceback (most recent call last):
  File "/home/shiyy/Documents/Pythons/chapter5/coach (copy).py", line 25, in <module>
    print(unique_james[0:3])
TypeError: 'set' object is not subscriptable

【修改后代码】

import os
import sanitize

james = []

#open the file to get the datas
def get_data(file_name):
    os.chdir('/home/shiyy/Documents/HeadFirstPython/chapter5')
    try:
        with open(file_name) as datas:
            data = datas.readline()
            return data.strip().split(',')
    except IOError as ioerr:
        print('File Error: ' + ioerr)
        return(None)
james = get_data('james.txt')
#print(james)

#调整数据格式
clean_james = [sanitize.sanitize(james_data) for james_data in james]
print(sorted(clean_james))

unique_james = list(set(clean_james))#强转成列表类型
print(sorted(unique_james))
print(sorted(unique_james)[0:3])

注:集合是无序的不重复的,unique_james = set(sorted(clean_james))无法实现讲有序的clean_james赋值给unique_james

【SyntaxError】
*@20170223*Python代码缩进问题
【问题描述】创建‘unique.py’文件后执行 sudo python3 setup.py install 后,出现如下错误提示:

running install
running build
running build_py
copying unique.py -> build/lib
running install_lib
copying build/lib/unique.py -> /usr/local/lib/python3.4/dist-packages
byte-compiling /usr/local/lib/python3.4/dist-packages/unique.py to unique.cpython-34.pyc
  File "/usr/local/lib/python3.4/dist-packages/unique.py", line 5
    return unique_list
                     ^
SyntaxError: 'return' outside function

unique.py源码:

def unique(unique_list,the_list):
    for t in the_list:
        if t not in unique_list:
            unique_list.append(t)
return unique_list 

【问题分析】Python缩进问题(return语句缩进存在问题)
【问题改正】调整return语句的缩进

def unique(unique_list,the_list):
    for t in the_list:
        if t not in unique_list:
            unique_list.append(t)
    return unique_list 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值