Python,尝试将CS​​V文件写入特定位置。

时间:2014-04-23 12:55:43

标签: python io writer

我正在尝试将文件写入特定位置,为此我编写了以下代码。

程序位于外置硬盘上的文件夹中。我已经使用os.path获取当前路径(我认为..)

" fileName" var is = hello " savePath" var is = data

当我运行代码时,我收到以下错误...

IOError:[Errno 13]权限被拒绝:' data \ hello_23-04-2014_13-37-55.csv'

在尝试写入文件之前,是否需要为文件设置权限?如果是这样..你怎么做>?

def writeData(fileName, savePath, data):
    # Create a filename
    thisdate = time.strftime("%d-%m-%Y")
    thistime = time.strftime("%H-%M-%S")
    name = fileName + "_" + thisdate + "_" + thistime + ".csv"

    # Create the complete filename including the absolute path 
    completeName = os.path.join(savePath, name)

    # Check if directory exists
    if not os.path.exists(completeName):
        os.makedirs(completeName)

    # Write the data to a file
    theFile = open(completeName, 'wb')
    writer = csv.writer(theFile, quoting=csv.QUOTE_ALL)
    writer.writerows(data)

1 个答案:

答案 0 :(得分:2)

当我尝试你在这里所做的精简版时,我得到了一个不同的错误(将权限问题放在一边):

>>> import os
>>> path = "foo/bar/file.txt"
>>> os.makedirs(path)
>>> with open(path, "w") as f:
...    f.write("HOWDY!")
...
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IOError: [Errno 21] Is a directory: 'foo/bar/file.txt'

请注意,执行此操作时:

# Check if directory exists
if not os.path.exists(completeName):
    os.makedirs(completeName)

...您正在创建一个目录,其名称既是您想要的路径(好),也是您尝试创建的文件的名称。将路径名仅传递给makedirs(),然后在完成该目录后在该目录中创建文件。