什么是最符合Python风格的打开文件方式?

6

我正在努力整理我的代码,并且我有困难弄清楚哪种方法被认为是最符合python风格的方法。

import os

dir = os.path.dirname(__file__)
str1 = 'filename.txt'
f = open(os.path.join(dir,str1),'r')

虽然第二种方法似乎最简洁,但我觉得fullPath的声明有点过于多余,因为它只会被使用一次。

import os

dir = os.path.dirname(__file__)
str1 = 'filename.txt'
fullPath = os.path.join(dir,str1)
f = open(fullPath,'r')

一般而言,避免在另一个调用内部调用函数是否更好,即使这会增加一行代码?

1
完全没有关系。哪种方式更“Pythonic”都无所谓。你应该按照自己的喜好来做。不管你选择哪种方式,都要遵循Januka的建议并使用with。这比你是否应该使用临时变量的问题更重要。就我个人而言,在这种简单的情况下,我倾向于不使用临时变量。 - Michael Geary
好的,谢谢你的回答! - Faeralis
另一种看待它的方式是“哪一个让代码更易读?”在更复杂的表达式中,使用临时变量来澄清代码肯定会有所帮助。在这个特定的代码中,两种方式都很简单,所以并没有太大关系。 - Michael Geary
3个回答

13
with open('file path', 'a') as f:
   data = f.read()
   #do something with data
或者
f = open(os.path.join(dir,str1),'r')
f.close()

谢谢你的回答,但这不是我要找的。 我在想是否应该在open()调用内部调用os.path.join(),还是在外部定义一个变量。 - Faeralis
1
你可能应该提到第二个选项需要在某个时候f.close()关闭文件,否则会保持文件指针打开。 - Soviut
@Soviut 收到。谢谢 - Januka samaranyake

2
file = open('newfile.txt', 'r') 

for line in file:

      print line

或者

lines = [line for line in open('filename')]

如果文件很大,使用read()绝对是不好的选择,因为它会将整个文件(没有size参数)加载到内存中。

如果您的文件很大,这将导致延迟!

因此,我不建议使用read()或readlines()。


我是新来的社区成员,所以我不知道所有的格式和风格。 有任何指南吗? 提前致谢。 - anati

0

在Python中打开文件有很多种方法,这也就意味着并没有一种真正的Pythonic方式来做到这一点。最终只是取决于你认为哪种方法最方便,特别是关于打开文件后你实际想要做什么。

大多数用户使用IDLE GUI“点击”打开文件,因为它允许他们查看当前文件并进行一些修改(如果需要的话)。

其他人可能只依赖命令行来执行任务,但代价是除了打开文件之外无法做任何其他事情。

使用命令行:

  1. % python myfile.py

请注意,为了使此操作起作用,您需要确保系统正在“查找”存储文件的目录。使用'cd'有助于找到您的路线。

  1. % python import myfile myfile.title

这种方法被称为使用对象.属性方法打开文件。当您要打开的文件具有您想要实现的操作时,此方法非常有用。

除了上述提到的方法外,还有更多的方法,请务必查阅pyDocs以获取更多详细信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接