What is the most pythonic way to open a file?

2019-04-13 01:58发布

问题:

I'm trying to clean up my code a little bit, and I have trouble figuring which of these 2 ways is considered the most pythonic one

import os

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

Although the second seems to be cleanest one, I find the declaration of fullPath a bit too much, since it will only be used once.

import os

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

In general, is it a better thing to avoid calling functions inside of another call, even if it adds a line of code ?

回答1:

with open('file path', 'a') as f:
   data = f.read()
   #do something with data

or

f = open(os.path.join(dir,str1),'r')
f.close()


回答2:

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

for line in file:

      print line

OR

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

If file is huge, read() is definitively bad idea, as it loads (without size parameter), whole file into memory.

If your file is huge this will cause latency !

So, i don't recommend read() or readlines()



回答3:

There are many ways to open files in python which goes to say that there really isn't really a pythonic way of doing it. It all just boils down to which method you see are most connivence, especially in regards to what you're actually trying to do with the file once its open.

Most users use the IDLE GUI "click" to open files because it allows them to view the current file and also make some alterations if there's a need for such.

Others might just rely on the command lines to perform the task, at the cost of not being able to do anything other than opening the file.

Using Command Lines:

  1. % python myfile.py

note that in order for this to work you need to make sure the system is "looking" into the directory where your file is storied. Using the 'cd' is useful to finding you route there.

  1. % python import myfile myfile.title

This method is known as the object.attribute method of opening files. This method is useful when the file you're opening has an operation that you would like to implement.

There are more ways than what's been stated above, be sure to consult the pyDocs for further details.



标签: python file pep8