首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Python 工匠:高效操作文件的三个建议

当我们编写与文件相关的代码时,通常会关注这些事情:我的代码是不是足够快?我的代码有没有事半功倍的完成任务? 在这篇文章中,我会与你分享与之相关的几个编程建议。...我会向你推荐一个被低估的 Python 标准库模块、演示一个读取大文件的最佳方式、最后再分享我对函数设计的一点思考。 下面,让我们进入第一个“模块安利”时间吧。...iter(iterable) 是一个用来构造迭代器的内建函数,但它还有一个更少人知道的用法。...为了保证程序的正确性,我需要为它写一些单元测试。...比如 io 模块内的 StringIO 对象就是其中之一。它是一种基于内存的特殊对象,拥有和文件对象几乎一致的接口设计。 利用 StringIO,我们可以非常方便的为函数编写单元测试。

77050
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    Python 工匠:高效操作文件的三个建议

    当我们编写与文件相关的代码时,通常会关注这些事情:我的代码是不是足够快?我的代码有没有事半功倍的完成任务? 在这篇文章中,我会与你分享与之相关的几个编程建议。...这是因为它有两个好处: with 上下文管理器会自动关闭打开的文件描述符 在迭代文件对象时,内容是一行一行返回的,不会占用太多内存 标准做法的缺点 但这套标准做法并非没有缺点。...iter(iterable) 是一个用来构造迭代器的内建函数,但它还有一个更少人知道的用法。...为了保证程序的正确性,我需要为它写一些单元测试。...比如 io 模块内的 StringIO 对象就是其中之一。它是一种基于内存的特殊对象,拥有和文件对象几乎一致的接口设计。 利用 StringIO,我们可以非常方便的为函数编写单元测试。

    1K20

    Python 工匠:高效操作文件的三个建议

    大家好,我是猫哥,今天分享的是“Python工匠”系列的第 11 篇文章。这个系列的文章对 Python 进阶有极大帮助,相信你读后必有收获哦。 ?...当我们编写与文件相关的代码时,通常会关注这些事情:我的代码是不是足够快?我的代码有没有事半功倍的完成任务? 在这篇文章中,我会与你分享与之相关的几个编程建议。...iter(iterable) 是一个用来构造迭代器的内建函数,但它还有一个更少人知道的用法。...为了保证程序的正确性,我需要为它写一些单元测试。...比如 io 模块内的 StringIO 对象就是其中之一。它是一种基于内存的特殊对象,拥有和文件对象几乎一致的接口设计。 利用 StringIO,我们可以非常方便的为函数编写单元测试。

    73631

    代码测试意味着完全消灭了Bug?

    一旦测试开始做任何有用的事情,例如验证它实际上从数据库中返回正确的行,单元测试纯粹主义者开始抱怨它并不是真正的单元测试,你做错了。...关注单元测试的一个重要原因是确保测试代码能够快速运行。这是对需要一天运行的大规模测试工具的响应。这在 Go 中也不是一个真正的问题。我编写的所有集成测试都在合理的时间内运行(最多几秒,通常更快)。...在原则上把所有东西分成一个个小的部分听起来像一个伟大的想法,但在实践中事实证明,使所有的小零件一起工作是一个非常困难的问题。混合方法似乎最适合内核和应用程序设计,平衡两种方法的优点和缺点。...我认为这同样适用于代码。 需要澄清的是,我并不是反对单元测试或 TDD,并且声称我们所有人都应该按照生活中的方式编写代码。我编写单元测试并在有意义的时候实践 TDD。...我的观点是,单元测试和 TDD 不是最后一个问题的解决方案,他们不应该不加区别的使用。这就是为什么我频繁的使用诸如“some”和“often”之类的单词。 测试框架 这让我想到了测试框架的主题。

    48410

    画说 Ruby 与 Python 垃圾回收

    如果算法和业务逻辑是一个人的大脑,那么垃圾回收机制是人体的哪个器官呢? 既然是"Ruby Python"大会,我觉得对比一下Ruby和Python的垃圾回收机制应该会很有趣。...最近Ruby社区发表了一篇博文,是关于如何通过更改Ruby GC设置来为单元测试提速的。我认为这篇文章是极好的。...对于想让单元测试跑得更快和让程序GC暂停更少的人来说很有裨益,但是GC并没能引起我的兴趣。第一瞥GC就像是一个让人昏昏欲睡的、干巴巴的技术主题。...实际上,Ruby会用另一个对象来装载字符串"ABC",另一个对象装载Node类定义,还有一个对象装载了代码中分析出的抽象语法树,等等) 如果我们再次调用Node.new,Ruby仅仅返回另外一个对象的引用...尽管由于许多原因Python也使用可用列表(用来回收一些特定对象比如 list),但在为新对象和变量分配内存的方面Python和Ruby是不同的。 例如我们用Pyhon来创建一个Node对象: ?

    70910

    12条专业的JavaScript规则

    下面是我的一些建议: 1、JS应该放到 .js 文件中 “额,只有那么几行而已…”,是的,我的意思是所有的 JS 都应该放在 .js 文件中。为什么呢?因为这有助于可读性,节省带宽。...2、JS 应该是静态的 我看到过很多程序员喜欢动态的使用JavaScript。他们喜欢像使用服务器端语言如C#, Ruby, Java那样来动态的使用JavaScript。千万不要这么做。...有一打的方式可以做到,而Gulp 和 gulp-uglify 是一种低摩擦和自动化的办法。 4、JS 应该位于页面底部 如果你把 标签放在 中,它会阻碍页面渲染。...然而,集成测试往往是脆弱的,所以我建议专注于自动化单元测试。自动化单元测试有多种选择。如果你是新手, 我建议你使用Jasmine,而如果你想要终极配置,可以使用Mocha with Chai。...当你移动到客户端的时候,不要忘记你在服务器端学到的经验教训。 这里并不仅仅意味着就像你在Angular 和 Knockout等 MVC 框架中那样分离模型、视图、控制器。

    1K90

    移动开发流水线建立以及自动化测试

    比如我任务完成了之后会生成一个build目录,我需要把多台节点的这个目录传递过去。这里需要注意的点在于,每个节点生成的结果会加上自己的机器前缀。...接下来是合并,因为cucumber生成的报告结果可以是json的,这一步就是在解析json的结果,我fork了cucumber-html-reporter对进行修改,做成了一个node的命令行工具,可以参考这里...关于自动化测试 iOS和安卓的开发中本身就提供单元测试的支持,比如iOS提供XCTest,安卓有JUnit,根据需要进行调整,比如iOS上我使用的Kiwi。...先说iOS,iOS上采用的calabash,一个是项目组之前也在用,二个是我在调研了appium之后,发现appium最新版本才开始支持XCUITest做功能测试,存在一些bug且功能不够完善,因此果断上...Ruby我不熟悉,我查了下有几种方式可以解决,你可以新建一个子类重写这几个方法,你可以利用ruby的动态性把这几个方法给动态的替换了。

    1.3K20

    12条专业的JavaScript规则

    下面是我的一些建议: 1、JS应该放到 .js 文件中 “额,只有那么几行而已…”,是的,我的意思是所有的 JS 都应该放在 .js 文件中。为什么呢?因为这有助于可读性,节省带宽。...2、JS 应该是静态的 我看到过很多程序员喜欢动态的使用JavaScript。他们喜欢像使用服务器端语言如C#, Ruby, Java那样来动态的使用JavaScript。千万不要这么做。...有一打的方式可以做到,而Gulp 和 gulp-uglify 是一种低摩擦和自动化的办法。 4、JS 应该位于页面底部 如果你把 标签放在 中,它会阻碍页面渲染。...然而,集成测试往往是脆弱的,所以我建议专注于自动化单元测试。自动化单元测试有多种选择。如果你是新手, 我建议你使用Jasmine,而如果你想要终极配置,可以使用Mocha with Chai。...当你移动到客户端的时候,不要忘记你在服务器端学到的经验教训。 这里并不仅仅意味着就像你在Angular 和 Knockout等 MVC 框架中那样分离模型、视图、控制器。

    88370

    ASP.NET MVC 4 - 测试驱动 ASP.NET MVC

    在我跳转到如何在您的代码中使用新的 Resolver 类之前,我想要介绍一下为什么我编写了自己开发的依赖关系解决程序,而不是创建实现随 ASP.NET MVC 3 引入的 IDependencyResolver...我喜欢在一个项目中创建可在我的所有测试项目中共享的 Test Double。如图 8 中所示,我已在 Tests 解决方案文件夹中创建了一个 Shared 项目。...我将此代码放置于用 TestInitialize 标记的方法中,这指示单元测试框架在测试类中运行每个测试前都执行该方法。...使用 StructureMap 作为默认的控制器工厂 ASP.NET MVC 提供了一个扩展点,使您能够添加在您的应用程序中实例化控制器的方式的自定义实现。...如图 11 中所示,我已将一个 IEmployeeService 参数添加到了 HomeController 的构造函数。在新的控制器工厂中解析控制器时,将自动解析该控制器的构造函数所要求的所有参数。

    5.4K70

    bkp2016_writeup

    type=get_answer是select数据,发现编码是一个传说中的日文编码sjis,本来以为是宽字节,结果搜到socket不能urlencode,所以传入的%bf%5c这样的就是当作6个字符,而不是...uncode为符号,所以卡了很久,后来从一个小伙伴那里知道,在sjis中有个符号(js中String.fromCharCode(0xa5))可以代替\,所以payload是这样的。...Dir.chdir main_dir doc.to_html end 先学了一下午的ruby web基本看懂了,站基本是一个代理一样的东西。...在服务器上写一个img标签, 因为是wget,所以还是外网,不知道怎么读本地的东西,卡了很久,后来别人告诉我,我才知道是wget的–page-requisites.../flag" /> 那么就能过他的http头判定,然后服务器wget会建立一个http:的文件夹,接着就能读到/flag了,吊吊吊… PPC & Crypto des ofb (des 弱口令密钥) 题目不是我做的

    34220

    鸿蒙ArkTS——File读写删操作(全示例)

    } from '@kit.ArkTS'; 上下文文件声明 这里用info.json举例,我DevEco Studio安装在D盘了,故而在操作完毕后会在D盘的根目录,如果你安装在C盘那对应的位置是相同的...private fileName: string = "/info.json"; 写入文件操作 这里是直接写入字符串,我示例中传入的参数是【info】类型是字符串,如果需要传入json对象需要单独将集合转成...(filesDir.concat(this.fileName)) } 读取文件操作 这里直接返回的是字符串,其中bufferSize看情况来修改长度,但是一定要注意不能是单数,在字符读取的时候半个字符就会出现读取异常..." + content) // 关闭文件 fileIo.closeSync(file); return content; } 读取json返回数据集对象示例代码: 这里是承接字符串之后再次进行数据遍历与拼接对象的方式来完成的...返回对象用于数据统计: 总结 我虽然没找到具体的操作文档,但是可以参考的文档是Rawfile开发指导-资源管理的文档:Rawfile开发指导-资源管理 这里共计核心的函数有下面的几个: 获取上下文:

    8500

    Golang 单元测试详尽指引

    单元测试是什么 单元是应用的最小可测试部件。在过程化编程中,一个单元就是单个程序、函数、过程等;对于面向对象编程,最小单元就是方法,包括基类、超类、抽象类等中的方法。...(驼峰或者下划线) 方法参数必须 t *testing.T 测试文件和被测试文件必须在一个包中 3.3 衡量原则 单元测试是要写额外的代码的,这对开发同学的也是一个不小的工作负担,在一些项目中,我们合理的评估单元测试的编写...因为一个方法在一个用例中可能调用多次,所以 map 的值类型是数组切片。当 mock 对象进行行为注入时,控制器会将行为 Add。当该方法被调用时,控制器会将该行为 Remove。...Monkey 提供给用户用于函数打桩的 API: 第一个参数是目标函数的函数名 第二个参数是桩函数的函数名,习惯用法是匿名函数或闭包 返回值是一个 PatchGuard 对象指针,主要用于在测试结束时删除当前的补丁...Monkey 提供给用户用于方法打桩的 API: 在使用前,先要定义一个目标类的指针变量 x 第一个参数是 reflect.TypeOf(x) 第二个参数是字符串形式的函数名 返回值是一个 PatchGuard

    4.6K1158

    从 python2.7 迁移到 python3.6

    : dictionary changed size during iteration, 因为 .keys() 返回的是 dict key 的 view 对象, 遍历它实际在遍历 dict 自己 (类似遍历...StringIO and io py2 里的 StringIO/cStringIO 没有了, 使用 io.BytesIO 和 io.StringIO 替换, 有个坑是和 csv模块一起工作的时候, py2...hash 实现输出的是一个固定数值, python3 中的 hash 算法改了, 并且默认开启random seed, 每次进程重启都会被重置, 所以每次重启进程 hash 的输出结果都不一样..../legacyhash/blob/master/hash.c, 我只支持了 对 bytes, unicode, int 的 hash 计算.尽量不要用这种方式, 使用一个跨语言的稳定算法. round...兼容性修改尽快合入主分支并上线, 不要长期维护单独的分支. 一个 repo 中的主要修改完成后打个 tag, 定期和新merge 的代码做 diff review.

    1.6K20

    10个Java开发人员的顶级测试工具、库和框架介绍

    测试是将专业开发人员与业余开发人员分开的学科之一。它不是关注TDD,BDD或任何测试方法,但在最低级别,您必须编写代码来自动测试代码。...如果你们中的一些人想知道为什么程序员应该专注于自动化测试,那么让我告诉你,由于更多的意识和DevOps的出现,自动化测试的重要性呈指数级增长。...REST Assured也是如此,因为我通常使用curl命令测试我的REST API ,但REST Assured将REST API的单元测试提升到另一个级别。...模拟是现代单元测试的基本技术之一,因为它允许您在没有任何依赖性的情况下单独测试代码,这就是为什么我鼓励每个Java开发人员与JUnit一起学习模拟框架。...7、Cucumber Cucumber是自动化集成测试的另一个很好的工具,但是它与同类别中的其他工具的不同之处在于它的规范功能。

    1.1K30

    从头到脚说单测——谈有效的单元测试(上篇)

    作者导语 从4月份至今,我能够全身心投入到腾讯新闻的单元测试专项任务中,从无知懵懂,到不断深入理解的过程,与开发同学互帮互助,受益匪浅。在此过程中,得到了质量总监等等优秀同事的倾囊指导,真心感谢!!...我希望把所有心得,总结成一篇较为全面的文章,分享给其他团队。时刻牢记:1. 不要滥用mock 2. 基于意图。 一. 为单元测试“正名” 我曾经认为,单元测试面向的是一个函数。...你的单元测试将使用不同的参数调用这个函数,并断言它返回了期待的结果;在面向对象语言里,下至一个方法,上至一个类都可以是一个单元(从一个单一的方法到一整个的类都可以是一个单元)。...· 支持为一个全局变量打一个桩 · 支持为一个函数变量打一个桩 · 支持为一个函数打一个特定的桩序列 · 支持为一个成员方法打一个特定的桩序列 · 支持为一个函数变量打一个特定的桩序列 · table-driven...Stub的函数返回不同的结果 /* 用法:gomonkey.ApplyMethodSeq(类的反射,"被stub函数名", 返回结构体);     Params{info1},中括号内为被stub函数的返回值列表

    2.6K20

    框架分析(6)-Ruby on Rails

    框架分析(6)-Ruby on Rails 主要对目前市面上常见的框架进行分析和总结,希望有兴趣的小伙伴们可以看一下,会持续更新的。希望各位可以监督我,我们一起学习进步。...Ruby on Rails Ruby on Rails(简称Rails)是一种使用Ruby编程语言开发的开源Web应用程序框架。...自动化测试 Rails框架鼓励开发人员编写自动化测试代码,以确保应用程序的稳定性和可靠性。Rails提供了一套完整的测试框架,包括单元测试、集成测试和功能测试等。...总结 Ruby on Rails是一个功能强大、易用且开发效率高的Web应用程序框架。...大量的插件和Gem支持 Rails拥有一个庞大的插件生态系统,开发人员可以通过安装插件或使用Ruby的包管理器Gem来扩展框架的功能。

    39020

    Groovy on Grails 交流活动

    Grails 确确实实引进并统一了一些 Ruby On Rails 不错的创意,Grails 将它们中的一部分应用到了 Groovy/Java 世界里,但更添加了许许多多 Ruby 中根本不存在的新特性与新概念...是的,我们将把许多类似的忠告写入读我文件中,当然除了一个由于连续数小时泡在 Grails 里而导致离婚的潜在可能的案例。...为什么不来听听其他用户对于免 FUD 编程和双倍的 web 应用开发速度的谈论呢,Grails2007 交流大会即将开始,门票正火热销售中。...我完全可以理解 Ruby On Rails 的支持者们想要保护他们的商标,但他们应该选择一种合法手段,而不是主动疏远别人。 再次申明,以上是我们团队的意见,也是我的意见。...而一切都是从这个 Groovy 的故事开始的:为什么要创造 Groovy,它的设计是怎样的,它在语言大家族里面又处于怎样的地位呢?

    1.7K20

    后端也要开始搞测试了?

    01 什么是单元测试? 大雄有个朋友毕业进了外企,不仅学了很多新单词还掌握了许多新技能,下面是我和他最近的对话内容: 友人A UT你知道什么意思吗? 啥?不造啊。...通常而言,一个单元可能是单个程序、类、对象、方法等。 02 为什么要进行单元测试?...单元测试是整个软件开发过程中的一个重要环节,执行一个完备的单元测试方案能够: 提高整个开发过程的时间效率; 确保实际功能与设计说明的一致性; 使软件产品的质量得到最好的保障。...如下图: 模拟某个类的方法,返回指定的值 我们在测试一个控制器的方法的时候,这个控制器中肯定是有一些方法是需要访问数据库的。...打桩其实就是在真实代码的地方用一个模拟方法代替,然后真实方法执行到这个地方的时候,它的返回值是我们模拟的返回值。

    75410
    领券