title: TypeError: coercing to Unicode: need string or buffer, file found (open() function)
body: <p>I'm new to programing especially Python. I'm trying to learn it with <a href="http://learnpythonthehardway.org/book/" rel="nofollow"> this tutorial </a>.
  I'm at exercise 19 now and one of the study drills is to create my own function of my own design and run it ten different times. I think I did well so far until the 10th run. It's my first time trying to create and write in a file and then open it again to take the numbers out and put it in the bread_and_butter variable.</p>
  
  <p>The error looks like this:</p>
  
  <pre><code>Traceback (most recent call last):
    File "ex19b.py", line 95, in &lt;module&gt;
      j2 = open(j1)
  TypeError: coercing to Unicode: need string or buffer, file found
  </code></pre>
  
  <hr>
  
  <pre><code>from sys import argv
  
  def bread_and_butter(bread, butter):
      print "I have %d bread(s) and %d grams butter\n" % (bread, butter)
  
  
  print "1. I can give it the numbers directly:"
  bread_and_butter(10, 15)
  
  print "2. Or I could use variables from my script:"
  amount_of_bread = 10
  amount_of_butter = 15
  
  bread_and_butter(amount_of_bread, amount_of_butter)
  
  print "3. We can even do math inside it:"
  bread_and_butter(10 + 5, 7 + 9)
  
  print "4. And we can combine both, math and variables:"
  bread_and_butter(amount_of_bread + 7, amount_of_butter + 9)
  
  print "5. We can let the user decide how much we have:"
  x = raw_input("How much bread do we have?")
  i = raw_input("And how much butter do we have?")
  
  y = int(x)
  z = int(i)
  
  bread_and_butter(y, z)
  
  print "6. Also we can take arguments for that:"
  
  script, how_much_bread, how_much_butter = argv
  
  q = int(how_much_bread)
  w = int(how_much_butter)
  
  bread_and_butter(q, w)
  
  print "7. Another mathematic way:\n"
  x1 = raw_input("How much breads do we have left?")
  x2 = raw_input("How much breads do we need?")
  y1 = raw_input("How much grams butter was left again?")
  y2 = raw_input("How much grams butter do we still need?")
  
  a1 = int(x1)
  a2 = int(x2)
  b1 = int(y1)
  b2 = int(y2)
  
  c, d = a2 - a1, b2 - b1
  
  print "We still need %d bread(s) and %d gram butter but\n" % (c, d)
  
  bread_and_butter(a1, b1)
  
  print "8. Another way:\n"
  bread = 10
  butter = 300
  
  y = bread - 8
  z = butter - 1000
  
  bread_and_butter(y, z)
  
  print "9. Second last way:\n"
  
  script, bread, butters = argv
  
  f = int(bread)
  g = int(butters)
  
  l = f - 30
  k = g - 500
  
  bread_and_butter(l, k)
  
  print "10. The last way:\n"
  
  j = raw_input("I'll create a file with numbers in it, what's it's name?")
  
  j1 = open(j, 'w')
  
  number1 = raw_input("How many breads do we have?")
  number2 = raw_input("And how much butter do we have?")
  
  print "I'm going to write these to the file..."
  
  j1.write("%s\n%s\n" % (number1, number2))
  
  j1.close()
  
  print "The filename is: %s." % j1.name
  
  j2 = open(j1)
  j3 = open(j1)
  
  j4 = j2.read()
  j5 = j3.read()
  
  j6 = int(j4)
  j7 = int(j5)
  
  bread_and_butter(j6, j7)
  </code></pre>
  
  <p>I'd be very glad when somebody could help me noob out here. I guess it won't be the last thing I won't understand but for now that gets me confusing. I'm sure you "pros" already get the problem when you just look at it.</p>
  
  <p>Anyway thanks in advance,</p>
  
  <p>Wumpel</p>