5

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 ?

Faeralis
  • 87
  • 1
  • 6
  • 1
    It really doesn't matter at all. Neither one is more "pythonic". You should do it whichever way you prefer. Whichever you do, follow Januka's advice and use `with`. That is much more important than the question of whether you should use a temp variable or not. Personally, in a simple case like this I would tend to go without the temp variable. – Michael Geary Nov 06 '16 at 04:23
  • Okay thanks for the answer ! – Faeralis Nov 06 '16 at 04:25
  • Another way to look at it would be "which one do you feel makes the code more readable?" In a case with a more complicated expression, it can definitely help to use a temp variable to clarify the code. In this particular code it doesn't matter much since it is so simple either way. – Michael Geary Nov 06 '16 at 04:26

3 Answers3

12
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()
Januka samaranyake
  • 2,385
  • 1
  • 28
  • 50
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()

anati
  • 264
  • 2
  • 13
  • Done! I'm new to community, so i don't know all formats and style. Is there any guidelines ? Thanks in advance – anati Nov 06 '16 at 07:58
0

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.