什么是打开文件的最pythonic方式?

Fae*_*lis 3 python file pep8

我正在尝试清理我的代码,我很难确定这两种方法中的哪一种被认为是最具pythonic的方式

import os

dir = os.path.dirname(__file__)
str1 = 'filename.txt'
f = open(os.path.join(dir,str1),'r')
Run Code Online (Sandbox Code Playgroud)

虽然第二个似乎是最干净的,但我发现fullPath的声明有点过多,因为它只会被使用一次.

import os

dir = os.path.dirname(__file__)
str1 = 'filename.txt'
fullPath = os.path.join(dir,str1)
f = open(fullPath,'r')
Run Code Online (Sandbox Code Playgroud)

一般来说,避免在另一个调用中调用函数是否更好,即使它添加了一行代码?

Jan*_*ake 8

with open('file path', 'a') as f:
   data = f.read()
   #do something with data
Run Code Online (Sandbox Code Playgroud)

要么

f = open(os.path.join(dir,str1),'r')
f.close()
Run Code Online (Sandbox Code Playgroud)