读取特定目录下所有的文件夹, 和文件名 os.walk()
os.walk("./") 是我最喜欢的 api 之一, 作用是获取某个路径下, 所有的文件夹和文件的路径, 如果你是一个喜欢写脚本的人, 那这个 api 或许能帮你更优雅的实现你的程序~
- import os
- for relative_file_dir_path, file_dir_name, file_name in os.walk('./'):
- print("当前文件夹路径 (字符串)", relative_file_dir_path)
- print("当前文件夹目录下包含的文件夹 (数组)", file_dir_name)
- print("当前文件夹目录下包含的文件名 (数组)", file_name)
- print("---"*10)
这个操作非常适合编写文件处理脚本, 比如你想将某个目录下的 markdown 文件批量转换为 word 文档, 参考 Python 将 md 批量转为 docx, 或者将 less 批量转换为 CSS, 参考批量转换 less 至 css, 配合其他优秀的库, 你可以完成一些好玩的操作, 比如 网站图片素材中文转英文
深拷贝
相比 js 蛋疼的深拷贝操作, python 的深拷贝简单粗暴
- copy_name = deepcopy(name)
- from copy import deepcopy
- name = ["z", "h", "a", "o", "o", "l", "e", "e"]
- copy_name = deepcopy(name)
- copy_name[0] = "Z"
- print("原列表", name);
- print("新列表", copy_name)
一个优秀的 api 就应该简洁强大, 见名知意, 反向对比 js 的深拷贝, js 的深拷贝简直就是一门学问, 而且几乎是面试必问, 当然深入研究一下也并非不好, 但如果开发者精力有限, 优秀的 api 可以极大提升我们的工作效率
随机取字符串 (点名利器)
如果你想写一个点名的小程序, python 一行代码就能搞定~
- import random
- for i in range(10):
- group = random.choice(["白月初", "东方月初", "苏苏", "红红", "王富贵", "清瞳"])
- print("第", i,"周", group, "打扫教室...")
反向切片
python 的切片操作可谓是优雅强大, 通过反向切片, 你可以迅速获得一个列表的反向序列
对列表进行反序是一个很常见的操作, 但 python 反向切片的玩法实在是非常简洁, 让人无法拒绝, 其实对某一数据结构进行 "反向" 是一个很有意思的操作, 比如对二叉树进行反序明星程序员被 Google 挂掉的故事, 还有 google 著名的
在不使用额外空间的前提下, 对句子内的单词进行反序
的问题, 比如将 This is a pen 反向为 pen a is This
小结
Python 为我们提供了大量好用的 api, 可以让我们的需求快速得到实现, 极大提升我们的开发效率, 但很多问题, 并不是用几个简单 api 就能搞定的, 比如前面提到的 google 的在不使用额外空间的情况下, 将 This is a pen 反向为 pen a is This, 这个题目的解法非常巧妙, 首先将 This is a pen 转换为 nep a si sihT, 然后根据空格所处的位置, 将单个的单词自身的序列进行调换, 这样就可以将, nep a si sihT 转换为 pen a is This
优秀的算法能让我们以更少的资源的实现程序, 优秀的 api 能提升我们的开发效率, 或许优秀的工程师, 就是在二者之间把握平衡的那类人吧~
来源: http://www.jianshu.com/p/4cf7111dc9fe