2

我应该使用哪一个来最大化性能?os.path.isfile(path)还是open(path)

4

3 回答 3

5

测试有帮助。os.path.isfileopen

In [475]: %timeit open('test_test.txt')
10000 loops, best of 3: 47.9 us per loop

In [476]: %timeit os.path.isfile('test_test.txt')
100000 loops, best of 3: 6.21 us per loop

但是看看运行时间。您需要打开或检查大量文件才能对大多数应用程序的总运行时间产生任何实际影响。

于 2013-06-06T13:59:06.810 回答
3

Mike 已经证明这isfile()更快,但还有两件事需要考虑:

  1. isfile()只测试文件是否存在——它不会告诉你任何关于读或写权限的信息!只想知道一个文件是否存在是非常罕见的,你经常想测试你是否可以用它做一些事情。open()会告诉你这个。
  2. Pythonic 代码通常更喜欢 EAFP(Easier to Ask Forgiveness than Permission)风格,在这种风格下,你尝试做一些事情,如果你做不到,就捕获异常。(与之相反的是 LBYL——在你跳跃之前先看一下,这在 Java 和 C 以及其他语言中很常见。)

这两点都表明您可能会更好地使用open(),除非您真的非常需要性能。

于 2013-06-06T15:13:06.220 回答
0

Afaikisfile()会更快,同时open(path)更安全,因为如果open()能够实际打开文件,您可以确定它就在那里。

于 2013-06-06T12:52:45.873 回答