您使用什么变量名来表示文件描述符?

17

这是一个非常琐碎的问题。经典例子是f = open('filename'),但是:

  • f不是非常具有描述性。在一段时间内没有查看代码之后,您可能会忘记它是指“文件”还是“函数f(x)”或“傅里叶变换结果”或其他什么内容。EIBTI。
  • 在Python中,file已经被一个函数占用了。

你还可以使用什么?

建议使用更加具有描述性的名称。例如,如果您正在处理日志文件,则可以使用logfile而不是f。如果您正在读取配置文件,则可以使用config_file。您也可以使用input_fileoutput_file来明确表示输入和输出文件。


9
file() 函数在2.x版本中已被弃用,然后在3.x版本中彻底移除,所以在我看来这是公平竞争的范畴。 - Nick T
@NickT 很好。我总是困惑该使用 file 还是 open - endolith
6个回答

8
 data_file
 settings_file
 results_file
 .... etc

1
方法名称和实例变量 - 使用函数命名规则:小写字母,必要时用下划线分隔单词以提高可读性。http://www.python.org/dev/peps/pep-0008/ - endolith
@endolith:你应该使用我的Python代码建议。驼峰式命名是Java风格。 - Unknown
就像我之前所说的,“with”对我来说不起作用,“f”也太短而且不够描述性(这也是这个问题的重点)。我希望这个答案符合Python风格,但它仍然是最好的选择。 - endolith

6
你可以将其附加到开头,类似于匈牙利风格的“file_fft”。
然而,我建议尽快关闭文件描述符,并推荐使用with语句,这样就不必担心关闭它,也更容易不失去追踪。
with open("x.txt") as f:
    data = f.read()
    do something with data

1
"with" 是一个很棒的功能!它显然大大简化了我的代码。你可以在2.5中使用它,只需添加 "from future import with_statement" 即可。 - John Paulett
我正在使用的对象无法与with语句一起使用。"对象没有'exit'属性"。 - endolith
2
@endolith:然后使用contextlib.closing - icktoofay

4

如果标识符的作用域被限制在比较小的范围内(例如with open('zap') as f:),我很高兴使用f来代表函数或文件。一般来说,具有大词汇范围的标识符应该更长更明确,而具有小词汇范围/寿命的标识符可以更短并且不太明确,这同样适用于开放文件对象以及其他任何类型的对象!-)


3

通常,如果文件对象的范围仅限于几行,则f是完全可读的 - 在打开调用中用于文件名的变量名称可能已经足够描述性了。否则,something_file可能是一个不错的选择。


2

通常我会用"fp"来表示短生命周期的文件指针。

对于寿命更长的描述符,我会更具描述性。例如,"fpDebugLog"。


0

我更喜欢使用以下之一:f,fp,fd

有时用于输入和输出文件的代码是inf/outf


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