1. 运行报错,找不到本地文件及模块、自定义模块

1.1 Example:

$/home/tops/bin/python xxx.py
Traceback (most recent call last):
File "xxx.py", line 22, in <module>
from xxx.xxx import xxx
ImportError: No module named xxx.xxx

1.2 Reason

import模块默认会从PYTHONPATH里寻找,但是当前要import的文件路径不在PYTHONPATH里(PYTHONPATH是python搜索模块的路径,python解释器会根据PYTHONPATH下的路径寻找各个模块)

1.3 Solution

python文件中添加路径:

  import sys
modulePath='自定义模块的文件夹路径'
sys.path.append(modulePath)

将项目根目录加入到sys.path模块中,在每个目录下的__init__.py中加入上述代码,这样,在该目录下的py文件通过引入__init__.py之后,就不用在每个文件里写入上述代码了。

#########################################################
#将根目录加入sys.path中,解决命令行找不到包的问题
import sys
import os
curPath = os.path.abspath(os.path.dirname(__file__))
rootPath = os.path.split(curPath)[0]
sys.path.append(rootPath)
#########################################################

2. Python TypeError: 'newline' is an invalid keyword argument for this function

2.1 Example

写一个存为csv文件的代码

 with open(outputFile, 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
for item in sortsim:
writer.writerow([item[0], item[1], item[2]])

出现问题了:

Traceback (most recent call last):
File "/data/ml/shan-als.py", line 54, in <module>
with open(outputFile, 'w', newline='') as csvfile:
TypeError: 'newline' is an invalid keyword argument for this function

2.2 Reason

python 版本的原因,python2和python3的open()函数参数不一样。py2用’wb’,py3可以用newline=’’。

2.3 Solution

加版本判断:

    import sys
if sys.version >= '3':
with open(outputFile, 'w', newline='') as csvfile:
writer = csv.writer(csvfile)
for item in sortsim:
writer.writerow([item[0], item[1], item[2]])
else:
with open(outputFile, 'wb') as csvfile:
writer = csv.writer(csvfile)
for item in sortsim:
writer.writerow([item[0], item[1], item[2]])

3. AttributeError: XXX instance has no attribute 'xxx'

3.1 Problem

调用某个模块时报AttributeError: GetData instance has no attribute 'data_config'

3.2 Solution

4. Python:'xxx' object is not callable

4.1 Reason

当出现报错 ‘xxx’ is not callable的时候,通常都是函数名重用或者变量名重用。

当出现这个错误时查看报错语句中用到的变量名或者函数名在其他语句中是否重用。

当显示 is not callable 时,表示 Python 代码调用了一个不能被调用的变量或者对象,有可能是可能是调用了错误的函数或者变量(即函数和变量重名),使得调用函数时,系统会误认为这是在调用变量,造成错误。

callable对象是指一个后边可以加()的对象,比如函数,所以这种异常肯定是某对象多加了(),比如:把一个变量用了函数名来命名,结果再调这个函数的时候就会报这个异常。

4.2 Solution

检查、修改变量名

5. python-logging日志写入文件(直接可用,简单易行,最简单的输出写入文件)

import logging
def logger_config(log_path,logging_name):
'''
配置log
:param log_path: 输出log路径
:param logging_name: 记录中name,可随意
:return:
'''
'''
logger是日志对象,handler是流处理器,console是控制台输出(没有console也可以,将不会在控制台输出,会在日志文件中输出)
'''
# 获取logger对象,取名
logger = logging.getLogger(logging_name)
# 输出DEBUG及以上级别的信息,针对所有输出的第一层过滤
logger.setLevel(level=logging.DEBUG)
# 获取文件日志句柄并设置日志级别,第二层过滤
handler = logging.FileHandler(log_path, encoding='UTF-8')
handler.setLevel(logging.INFO)
# 生成并设置文件日志格式
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
handler.setFormatter(formatter)
# console相当于控制台输出,handler文件输出。获取流句柄并设置日志级别,第二层过滤
console = logging.StreamHandler()
console.setLevel(logging.DEBUG)
# 为logger对象添加句柄
logger.addHandler(handler)
logger.addHandler(console)
return logger if __name__ == "__main__":
logger = logger_config(log_path='log.txt', logging_name='据说名字长一点容易被人记住')
logger.info("info")
logger.error("error")
logger.debug("debug")
logger.warning("warning")
print('print和logger输出是有差别的!')

【ABAQUS 二次开发笔记】Python 报错收集和解决方法的更多相关文章

  1. 【ArcGIS二次开发】CreateFeature报错(HRESULT E_FAIL)

    在VS2010下基于ArcGIS 10.1做二次开发时遇到个奇怪的问题,对于MXD工程文档中已经存在的图层,获取其FeatureClass可以调用CreateFeature()函数生成要素,但是对于通 ...

  2. Python首次安装后运行报错(0xc000007b)的解决方法

    最近在安装完Python后运行发现居然报错了,错误代码是0xc000007b,于是通过往上查找发现是因为首次安装Python缺乏VC++库的原因,下面通过这篇文章看看如何解决这个问题吧.   错误提示 ...

  3. 【FAQ】应用集成HMS Core部分服务出现“ 6003报错”情况的解决方法来啦

    背景 开发者在应用中集成HMS Core部分服务时,android sdk 以及flutter等跨平台sdk,会出现编译打包后,运行报6003错误码的情况.根据查询可以得知,错误代码 6003 表示证 ...

  4. linux服务器启动报错UNEXPECTED INCONSISTENCY解决方法

    内网的linux服务器给开发员用来测试以及共享文件使用,今天早上发现xshell连接不上该服务器,一开始进入系统显示reboot and select proper boot device or in ...

  5. cobbler安装4个报错汇总及解决方法:ImportError

    安装完,检查cobbler:cobbler check发现这个问题ImportError: No module named yaml 具体报错如下: [root@www localdisk]# cob ...

  6. sysctl -p 报错问题的解决方法

    最近执行sysctl -p 命令时一直报错,类似这种格式: error: permission denied on key...... 经过网上搜索, 原来这些问题都是因为openvz模版的问题,要进 ...

  7. vue.js常见的报错信息及其解决方法的记录

    1.Vue packages version mismatch 翻译:vue包版本匹配错误 报错样例: 报错原因:通常出现于一些依赖库的更新或者安装新的依赖库之后(可以认为npm update已经成为 ...

  8. 关于前段JS代码报错问题的解决方法

    最近接手别人的一个项目,项目导入到Myeclipse中,JS代码一直报错,说missing semicolon.该错误是Myeclipse在检查JS代码的过程出现的. 后来经过检查,发现JS代码本身没 ...

  9. navicat连接mysql报错1251的解决方法

    1.新安装的mysql8,使用破解版的navicat连接的时候一直报错,如图所示: 2.网上查找原因发现是mysql8 之前的版本中加密规则是mysql_native_password,而在mysql ...

  10. 使用Guava报错NoSuchMethodError的解决方法

    在使用Guava缓存的时候.系统报错: java.lang.NoSuchMethodError: com.google.common.base.Objects.firstNonNull 错误原因就是找 ...

随机推荐

  1. 【Python】【爬虫】爬虫问题:requests的content和text

    爬虫问题:requests的content和text 通常来说,text获取的是Unicode编码的文本数据,content获取的是byte类型的二进制数据,比如获取图片本身.PDF文件之类的,可以用 ...

  2. 【转载】 一次生产环境的NOHTTPRESPONSEEXCEPTION异常的排查记录

    https://www.freesion.com/article/41531004212/ 环境: jdk1.8+tomcat8+httpclient4.5.2 主要现象: 项目偶发出现org.apa ...

  3. Java 随机数 Random VS SecureRandom

    1. Math.random() 静态方法 产生的随机数是 0 - 1 之间的一个 double,即 0 <= random <= 1.使用: for (int i = 0; i < ...

  4. 在不同操作系统上安装 PostgreSQL

    title: 在不同操作系统上安装 PostgreSQL date: 2024/12/26 updated: 2024/12/26 author: cmdragon excerpt: PostgreS ...

  5. Qt编写地图综合应用35-设备分布图

    一.前言 设备分布图在所有的地图应用案例项目中,最常见最普遍最基础,就是将项目中的设备信息,比如设备名称.设备所在的经纬度坐标.设备的其他信息(设备地址.设备参数等),通过标注点的形式添加到地图中,至 ...

  6. DEAT NOTE

    动漫 评分/10 评价 进击的巨人 10 献出心脏! Re:从零开始的异世界生活 10 蕾姆蕾姆!!! 反叛的鲁鲁修 10 算无遗策鲁鲁修 末日时在做什么?... 9 谁还不是个珂学家 东京食尸鬼 9 ...

  7. PHP 安装启用openssl(解决 wordpress可选的模组openssl未被安装或已被禁用)

    本教程仅适用Windows Servier IIS网站服务器. 我的博客使用IIS搭建,相比Linux,相关的教程格外少.因此让以后的小伙伴也能马上解决问题,分享此方法. 首先需要下载php对应版本的 ...

  8. React基础笔记2

    一.生命周期函数 挂载卸载过程 constructor        props context componentWillMount  服务器与客户端 componentDidMount  ajax ...

  9. Solution Set -「NOIP Simu.」20221010

      会不会组题啊? 希望 trash round 少来点. 「Unkown」构造字符串   给定 \(m\) 组形如 \((x,y,z)\), 表示 \(\operatorname{lcp}(S[x: ...

  10. Redis学习笔记之Jedis

    Jedis语法总结 Jedis是Java代码操作Redis的工具包,里面封装了操作Redis的方法 Jedis jedis = new Jedis(String ip , String port) 1 ...