Python csv:写入不同的目录

时间:2014-07-08 21:52:12

标签: python csv

我正在从网站下载文件,我需要保存原始文件,然后打开它,然后将文件下载的URL和下载日期添加到文件中,然后将文件保存到其他文件。目录

我用这个答案来修改csv:how to Add New column in beginning of CSV file by Python

但是在调用write()函数之前,我很难将文件重定向到另一个目录。

编写文件然后移动文件是最好的答案,还是有办法将文件写入open()函数中的不同目录?

if fileName in fileList:
    print "already got file "+ fileName
else:
    # download the file
    urllib.urlretrieve(csvUrl, os.path.basename(fileName))
    #print "Saving to 1_Downloaded "+ fileName

    # open the file and then add the extra columns
    with open(fileName, 'rb') as inf, open("out_"+fileName, 'wb') as outf:
        csvreader = csv.DictReader(inf)

        # add column names to beginning
        fieldnames = ['url_source','downloaded_at'] + csvreader.fieldnames  
        csvwriter = csv.DictWriter(outf, fieldnames)
        csvwriter.writeheader()
        for node, row in enumerate(csvreader, 1):
            csvwriter.writerow(dict(row, url_source=csvUrl, downloaded_at=today))

3 个答案:

答案 0 :(得分:0)

我相信两者都有效。 对我来说,最好的方法是将其附加到文件并在之后重新定位。

看看: shutil.move

我相信重写整个文件的效率会降低。

答案 1 :(得分:0)

没有必要重建文件,尝试使用时间模块为文件名创建时间戳字符串,并使用os.rename移动文件。

示例 - 这只是将文件移动到指定位置:

os.rename(' filename.csv'' NEW_DIR / filename.csv&#39)

希望这有帮助。

答案 2 :(得分:0)

最后使用shutil进行了一个额外的例程:

# move and rename the 'out_' files to the right dir
source = os.listdir(downloaded)

for files in source:
    if files.startswith('out_'):
        newName = files.replace('out_','')
        newPath = renamed+'/'+newName
        shutil.move(files,newPath)