【ABAQUS 二次开发笔记】Python 报错收集和解决方法
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
- 解决AttributeError: XXX instance has no attribute 'xxx'的问题(新手必备)
- StackoverFlow-Python: instance has no attribute
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 报错收集和解决方法的更多相关文章
- 【ArcGIS二次开发】CreateFeature报错(HRESULT E_FAIL)
在VS2010下基于ArcGIS 10.1做二次开发时遇到个奇怪的问题,对于MXD工程文档中已经存在的图层,获取其FeatureClass可以调用CreateFeature()函数生成要素,但是对于通 ...
- Python首次安装后运行报错(0xc000007b)的解决方法
最近在安装完Python后运行发现居然报错了,错误代码是0xc000007b,于是通过往上查找发现是因为首次安装Python缺乏VC++库的原因,下面通过这篇文章看看如何解决这个问题吧. 错误提示 ...
- 【FAQ】应用集成HMS Core部分服务出现“ 6003报错”情况的解决方法来啦
背景 开发者在应用中集成HMS Core部分服务时,android sdk 以及flutter等跨平台sdk,会出现编译打包后,运行报6003错误码的情况.根据查询可以得知,错误代码 6003 表示证 ...
- linux服务器启动报错UNEXPECTED INCONSISTENCY解决方法
内网的linux服务器给开发员用来测试以及共享文件使用,今天早上发现xshell连接不上该服务器,一开始进入系统显示reboot and select proper boot device or in ...
- cobbler安装4个报错汇总及解决方法:ImportError
安装完,检查cobbler:cobbler check发现这个问题ImportError: No module named yaml 具体报错如下: [root@www localdisk]# cob ...
- sysctl -p 报错问题的解决方法
最近执行sysctl -p 命令时一直报错,类似这种格式: error: permission denied on key...... 经过网上搜索, 原来这些问题都是因为openvz模版的问题,要进 ...
- vue.js常见的报错信息及其解决方法的记录
1.Vue packages version mismatch 翻译:vue包版本匹配错误 报错样例: 报错原因:通常出现于一些依赖库的更新或者安装新的依赖库之后(可以认为npm update已经成为 ...
- 关于前段JS代码报错问题的解决方法
最近接手别人的一个项目,项目导入到Myeclipse中,JS代码一直报错,说missing semicolon.该错误是Myeclipse在检查JS代码的过程出现的. 后来经过检查,发现JS代码本身没 ...
- navicat连接mysql报错1251的解决方法
1.新安装的mysql8,使用破解版的navicat连接的时候一直报错,如图所示: 2.网上查找原因发现是mysql8 之前的版本中加密规则是mysql_native_password,而在mysql ...
- 使用Guava报错NoSuchMethodError的解决方法
在使用Guava缓存的时候.系统报错: java.lang.NoSuchMethodError: com.google.common.base.Objects.firstNonNull 错误原因就是找 ...
随机推荐
- 智谱开源CogAgent的最新模型CogAgent-9B-20241220,全面领先所有开闭源GUI Agent模型
在现代数字世界中,图形用户界面(GUI)是人机交互的核心.然而,尽管大型语言模型(LLM)如ChatGPT在处理文本任务上表现出色,但在理解和操作GUI方面仍面临挑战,因此最近一年来,在学界和大模型社 ...
- Qt4/5升级到Qt6吐血经验总结V202308
00:直观总结 增加了很多轮子,同时原有模块拆分的也更细致,估计为了方便拓展个管理. 把一些过度封装的东西移除了(比如同样的功能有多个函数),保证了只有一个函数执行该功能. 把一些Qt5中兼容Qt4的 ...
- IntelliJ IDEA 2020+Maven+SSM框架正常编译并与行后端代码时控制台的提示信息
- Unix和Windows操作系统中路径中的正斜杠和反斜杠的区别
- [转]Winform实现多线程异步更新UI(进度及状态信息)
引言 在进行Winform程序开发需要进行大量的数据的读写操作的时候,往往会需要一定的时间,然在这个时间段里面,界面ui得不到更新,导致在用户看来界面处于假死的状态,造成了不好的用户体验.所以在大量数 ...
- 即时通讯技术文集(第24期):音视频WebRTC好文合集 [共20篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第 24 期. [- 1 -] 开源实时音视频技术WebRTC的现状 [链接] http://w ...
- 即时通讯技术文集(第15期):IM跨平台和社交软件红包技术 [共19篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第15 期. [- 1 -] IM跨平台技术学习(一):快速了解新一代跨平台桌面技术--Elec ...
- C# wpf,winform修改另一个.net EXE程序集的resources 资源文件
可以使用Mono.Cecil库更新.添加可执行文件的资源 以下是使用 Mono.Cecil 进行资源操作的三种基本方法: 首先需要程序中引入 Mono.Cecil Nuget: PM> Inst ...
- 记录一下vue的插件
2022.1.25今天记录下下载文件的插件 js-file-download 以防遗忘 首先npm install js-file-download --save 其次引入import file ...
- Java AQS学习笔记
1. AQS介绍 AQS的全称为(AbstractQueuedSynchronizer),这个类在java.util.concurrent.locks包下面. AQS是一个用来构建锁和同步器的框架,使 ...