【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