为什么我的写功能没有创建文件?

时间:2012-05-13 01:28:21

标签: python file-io mode

根据我读过的所有资源,open方法会创建一个文件或用现有名称覆盖一个文件。但是我试图使用它并且我收到错误:

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

我试图读取文件,但却没有。你确定该文件存在吗?如果确实存在,您是否指定了正确的目录/文件夹?

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) 

正如你所看到的那样,我正在尝试将我已经制作的列表写入文件中,但它并没有像它那样创建它。我已经尝试了open函数的所有不同模式,它们都给了我相同的错误。

4 个答案:

答案 0 :(得分:1)

您似乎没有对当前工作目录的写入权限。您可以使用import os; print os.getcwd()获取Python工作目录。

然后,您应该检查您是否在此目录中具有写入权限。这可以在Python中用

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

如果您获得False(无写入权限),则必须将newfile.txt文件放在其他位置(可能是path + '/newfile.txt'?)。

答案 1 :(得分:0)

您确定要创建文件夹的目录是否存在?

如果不是......那么操作系统将无法创建文件。

答案 2 :(得分:0)

这看起来像权限问题。

目录不存在或者您的用户没有写入此目录的权限。

答案 3 :(得分:0)

我猜可能存在的问题可能是:

1)您将路径和basename作为参数传递。如果您将参数作为字符串传递,那么您可能会遇到此问题:

例如:

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


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

如果以上述方式传递参数,则表示您正在执行此操作

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

2)您在文件名中的路径+后面没有包含冒号(:)

3)也许,该文件不存在。