python代码没错但运行不出来
python代码没错但运行不出来是什么原因呢?不知道的小伙伴来看看小编今天的分享吧!
1、python代码没错但运行不出来的原因
某项目中使用python脚本方式将日志文件中的数据持续的转换格式输出到另一文件中以供其他日志分析应用使用。当后台运行采取重定向方式输出到某一文件时,发现并没有内容输出,命令如下
python xxx.py > xxx.log &
测试发现,当前台直接输出到终端时正常,使用后台运行重定向的方式输出到文件中时无法输出。
2、解决办法
发现是在程序运行时,输出有缓存,只有当程序运行结束或者缓冲区满后才会输出。因为程序是一致在运行的所以不可能等待程序结束在输出。并且要求是有实时性的所以等缓冲区满输出的方式也不可取。
所以采用在python运行时加上-u参数,如
python -u xxx.py > xxx.log &
-u参数的意义是不使用缓冲的方式输入输出
详细如下
Force std, stdout and stderr to be totally unbuffered. On systems where it matters, also put std, stdout and stderr bary mode. Note that there is ternal bufferg xreadles(), readles() and file-object iterators ("for le sys.std”) which is not fluenced by this option. To work around this, you will want to use "sys.std.readle()” side a "while 1:” loop.
补充知识python中运行代码时没有报错也没有输出而且还有exit code 0的结束标志
如下所示
f=open("passwd.txt",'r')
prt (f.read(4))
f.close()
这是想要执行的代码
passwd.txt中的内容
ntp:x:38:38::/etc/ntp:/sb/nolog
apache:x:48:48:Apache:/var/:/sb/nolog
saslauth:x:498:76:Saslauthd user:/var/empty/saslauth:/sb/nolog
postfix:x:89:89::/var/spool/postfix:/sb/nolog
gdm:x:42:42::/var/lib/gdm:/sb/nolog
pulse:x:497:496:PulseAudio System Daemon:/var/run/pulse:/sb/nolog
输出的结果是
Process fished with exit code 0
后来排查发现原来是解释器的问题
我之前使用的解释器是pycharm提供的虚拟解释器
#####如何查看解释器
点file?C>new projects
如果选择的是2就是使用了pycharm提供的虚拟解释器,又因为passwd.txt文件不是在虚拟环境中的所以就没有输出。
点击3然后选择你已经下载好的解释器即可。
趣事百科
- 秦海璐结过多少次婚 秦海璐有几次婚姻
- 女生身高多少算矮 女生身高多少以下算矮
- 地动仪是谁发明的 世界上第一架地动仪是谁发明
- 大兴安岭巨蛇事件 大兴安岭巨蛇事件真相
- 黄晓明宣布恋情 黄晓明公布新恋情
- 红色高跟鞋吉他谱 红色高跟鞋吉他谱G调弹唱
- 爱上黑社会老大:爱上黑社会老大的电影
- 安娜贝尔原型事件 安娜贝尔原型长什么样
- 李谷一的身高是多少 歌唱家李谷一身高多少厘米
- 霍思燕和江一燕什么关系 江一燕和霍思燕哪个更
- 三星堆为什么不敢研究了 三星堆为什么不敢挖掘
- 朱秀华事件:朱秀华事件骗局
- 方琼现任老公是谁 方琼老公个人资料
- 东来东往现状:东来东往是哪里人
- 太湖冤案事件真相 太湖冤案事件真相揭秘
- 双鱼玉佩恐怖的黑白照 双鱼玉佩黑白照片大全