user1390754
user1390754

Reputation: 171

Why is my write function not creating a file?

According to all the sources I've read, the open method creates a file or overwrites one with an existing name. However I am trying to use it and i get an error:

File not found - newlist.txt (Access is denied)
I/O operation failed.

I tried to read a file, and couldn't. Are you sure that file exists? If it does exist, did you specify the correct directory/folder?

def getIngredients(path, basename):
  ingredient = []
  filename = path + '\\' + basename
  file = open(filename, "r")
  for item in file: 
    if item.find("name") > -1:
      startindex = item.find("name") + 5
      endindex = item.find("<//name>") - 7
      ingredients = item[startindex:endindex]
      ingredient.append(ingredients)

  del ingredient[0]
  del ingredient[4]


  for item in ingredient:
    printNow(item)

  file2 = open('newlist.txt', 'w+')  

  for item in ingredient:  
     file2.write("%s \n" % item) 

As you can see i'm trying to write the list i've made into a file, but its not creating it like it should. I've tried all the different modes for the open function and they all give me the same error.

Upvotes: 1

Views: 1453

Answers (4)

user907629
user907629

Reputation: 534

I guess the possible problems may be:

1) You are passing the path and basename as parameters. If you are passing the parameters as strings, then you may get this problem:

For example:

def getIngredients(path, basename):
  ingredient = []
  filename = path + '\\' + basename


getIngredients("D","newlist.txt")

If you passing the parameters the above way, this means you are doing this

filename = "D" + "\\" + "newlist.txt"

2) You did not include a colon(:) after the path + in the filename.

3) Maybe, the file does not exist.

Upvotes: 0

Eric O. Lebigot
Eric O. Lebigot

Reputation: 94475

It looks like you do not have write access to the current working directory. You can get the Python working directory with import os; print os.getcwd().

You should then check whether you have write access in this directory. This can be done in Python with

import os
cwd = os.getcwd()
print "Write access granted to current directory", cwd, '>', os.access(cwd, os.W_OK)

If you get False (no write access), then you must put your newfile.txt file somewhere else (maybe at path + '/newfile.txt'?).

Upvotes: 1

Jay D
Jay D

Reputation: 3307

This looks like a permissions problem.

either the directory does not exist or your user doesn't have the permissions to write into this directory .

Upvotes: 0

poy
poy

Reputation: 10507

Are you certain the directory that you're trying to create the folder in exists?

If it does NOT... Then the OS won't be able to create the file.

Upvotes: 0

Related Questions