[Python] 脚本运行各种报错及解决方法(不定时更新)

本文详细解析了Python编程中常见的7种错误,包括找不到模块、缩进错误、类型错误、语法错误等,并提供了相应的解决方法,帮助开发者快速定位并解决问题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.can't find '__main__' module in ' '  

问题原因:尚未保存脚本就运行导致

解决方法:保存脚本后再运行

2.IndentationError: unindent does not match any outer indentation level

问题原因:使用的缩进方式不一致,有的是 tab 键缩进,有的是空格缩进

解决方法:更改缩进方式相同

3.IndentationError: unexpected indent

问题原因:缩进的问题

解决方法:调整代码缩进

4.TypeError: '>' not supported between instances of 'str' and 'int'

问题原因:input()获取到的类型是str,如果未将其转换为int,将其与数字进行比较时就会出现此问题

解决方法:在外面加上int(),如:age=int(input("请输入年龄:"))

5.SyntaxError: invalid syntax

问题原因:出错的地方未加冒号

解决方法:加上冒号

6.TypeError: __del__() takes 0 positional arguments but 1 was given

在类中创建方法时,无论是否需要传参,括号内需要有“self”

解决方法:加上"self"

7.RuntimeError: dictionary changed size during iteration
问题原因:dict的长度发生了改变
解决方法:将keys转list,再处理  示例:for key in list(a.keys())

### 解决 Python 文件通过定任务执行报错 x02 的问题 当遇到 Python 脚本作为定任务运行出现 `x02` 错误的情况,通常是因为环境差异或者权限设置不当引起的。具体到不同操作系统对于文件权限的要求有所不同。 #### 权限调整 Ubuntu 对于 `/var/spool/cron/crontabs/<username>` 这类用于存储用户自定义计划任务的文件有严格的安全策略,规定其访问模式应为 600 即 `-rw-------` 才能正常工作[^1];然而,在 CentOS 上,默认情况下即使该文件保持更宽松一点的读取/写入权限(比如 644),依然可以成功触发并完成预定的任务调度操作。因此如果是在 Ubuntu 下部署,则需确保相关脚本及其依赖资源都具备恰当的存取控制属性。 为了修正这个问题: - 修改 crontab 文件权限至 600: ```bash chmod 600 /var/spool/cron/crontabs/<your_username> ``` #### 环境一致性保障 另一个可能的原因在于命令行环境下与实际程序运行环境中存在变量缺失或版本冲突等问题。可以通过创建独立虚拟环境来隔离项目所需库,并指定解释器路径以避免此类干扰因素的影响。 此外,考虑到某些特殊字符可能会引起解析失败,建议检查 Cron 表达式的格式正确性和转义处理情况。 最后值得注意的是,若采用 APScheduler 库实现内部调度机制而非系统级服务的话,记得按照官方文档指导合理配置日志记录以便追踪潜在异常状况[^3]。 ```python from apscheduler.schedulers.background import BackgroundScheduler import logging logging.basicConfig(level=logging.DEBUG) def job(): print("Executing scheduled task") sched = BackgroundScheduler() sched.add_job(job, 'interval', seconds=10) sched.start() try: while True: pass except (KeyboardInterrupt, SystemExit): sched.shutdown(wait=False) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值