踩过的几个坑json.dumps/含while的shell脚本/awk~
2016-07-23 13:44
253 查看
坑了自己的坑
踩坑的经历是痛苦的,值得纪念,毕竟表示曾经逝去的青涩,同时避免以后再踩,虽然踩踩更健康。注1:坑号与重要度无关,只是顺序表示而已。
注2:版权已由中华人民共和国公民本人所有,最终解释权归我党所有。
[b]1号坑[/b]
上硬菜,已知 list=[{“a”:”1”, “b”:”2”}, {“c”:”逗逼”,”d”:”人生”}],如何存储到文件中,且中文能够正常显示呢?
import json list_save=[{"a":"1a", "b":"2b"}, {"c":"逗逼","d":"人生"}] json.dumps(list_save, ensure_asscii=False) ## 上面json.dumps将变量存储为json字符串,且支持中文 ## ## 精髓就在 ensure_asscii=False上面 ## 没有这个设置,将其存储到文本中时,会出现\e0\gx这样的中文 ## ## 技巧:大量地读取被json.dumps的文件时,用simplejson.loads()读取会更快,或者直接用python的内置函数 ##
中文处理总是伴随着各种蛋疼的诡异事情发生,木有办法,老祖宗留下的最开发人大脑的语言有其独特的地方,体现在代码里也一样,需要不一样的待遇#我就是我,不一样的我#
[b]2号坑[/b]
上鸡汤,已知一个shell脚本用while写的无限循环,想修改循环内部的代码,怎么生效?前提:该shell脚本早先已经运行起来了。
(1)## while的shell脚本 ## while [1 -gt 0] do ## 某些无聊操作 ## done (2)## 你想添加的shell命令 ## echo "我为什么这么帅气无双?" (3)## 修改之后的shell脚本 ## while [1 -gt 0] do ## 某些无聊操作 ## echo "我为什么这么帅气无双?" done
当修改完事之后,发现死活不出“我为什么这么帅气无双?”,然后对自己的帅度产生怀疑,难道真的不帅?难道苍天无眼?啊!
悲愤中,准备砸了电脑,干掉所有不爽的人,自此浪迹天涯之时,发现这个循环shell脚本一直在运行,所有后续修改只有在重新启动该脚本之后才会生效,然后阳光明媚起来,生活是美好的。
## 查看一下这个shell脚本是否在运行 ## ps -aux | grep "shell.name" ## 1314 0.0 0.0 138 222 ? S 11:11 00:00 sh shell.name ## 果断在运行中 ## ## Gan掉这个shell脚本 ## kill -9 1314 ## 多么痛的领悟啊,1314被亲手干掉了 ## ## 重新给这个脚本一次机会 ## cd /your/shell/dir/; sh shell.name
[b]3号坑[/b]
这是一道awk的菜,其实不是坑,只是记录下来,告诉自己有时候有很牛逼的东西你不懂,自己搞一套从而浪费了时间。
我们想计算文本中某些列的累加和,或者类似的操作,用awk怎么搞?
## awk -F '\t' 'BEGIN{init paras}{if(expre) process here} END{print result}' ## ## 解释一下上面的命令,begin->开始 初始化参数;if满足条件,则对参数操作,end->输出结果 ## ## -F '\t'是设置间隔符为"\t" ## ## 假如我们计算一下第三列的总和 ## awk -F '\t' 'BEGIN{sum=0}{sum += $3}END{print "sum is:"$sum}' file.name ## 其中BEGIN/END小写行不,不行 ##
[b]4号坑[/b]
这是后续又踩的坑之一,补充在这里。
## 标准输出1、标准error输出2 ## ## this means 标准输出 到文件中 ## print sth > file ## this means 将标准错误重定向到 标准输出 ## print sth > file 2>&1 ## 上面这句的好处是 ## ## 如果在shell里面的错误,也可以打印到文件里 ## ## 方便查看日志的时候查看执行异常,错误 ##
[b]5号坑[/b]
这个坑本不是坑,无奈我踩进来了,也就变成了坑。读取文件。
## 关于读取文件的方法 ## ## (1) 简洁版,最优版 ## 建议这个方法 ## for line in open(filepath): line = line.strip()# 这里需要加strip,否则会有\n # if len(line) == 0: continue # do sth yourself # ## (2) 稍微复杂版 ## f = open(filepath) line = f.readline().strip() while line != "": if len(line)>0: # do sth yourself # # while 里面不能用continue # 结构上不美观紧凑 # line = f.readline().strip() # 这一句是必须的,否则while无法循环 # ## (3)避免line的读取 ## with open(filepath) as f: for line in f: line = line.strip() if len(line) == 0: continue # do sth yourself #
后记
踩坑是个不断纠错的过程,是指导学习趋向于较优的一种学习策略。在机器学习中,可以用其来指导学习过程。相关文章推荐
- Xshell连接虚拟机的ubuntu
- Shell脚本中执行mysql的几种方式(转)
- Shell前后台进程切换
- Mac下的Bash配置文件冲突问题
- linux shell常用命令总结
- shell中if条件字符串、数字比对,[[ ]]和[ ]区别
- shell中各种括号的作用()、(())、[]、[[]]、{}
- 单行bash命令
- Shell脚本编程总结及速查手册
- 让你提升命令行效率的Bash快捷键
- Linux-shell常用时间格式
- linux课堂笔记--shell4正则表达式
- 51NOD 1070 Bash游戏 V4
- shell--指“提供使用者使用界面”的软件(命令解析器)
- 菜鸟的Linux之路3 bash脚本编程之二
- Ubuntu 设定壁纸自动切换的shell脚本
- .bash_profile和.bashrc说明
- 使用shell操作mysql(转)
- linux shell 编程基础
- 使用shell实现打印给定日期的日历