-1

我正在尝试构建一个脚本来扫描网站,创建一个带时间戳的文件夹,然后将带时间戳的文件放入该文件夹中。我能够让脚本扫描网站并制作时间戳文件,但是当我尝试获取动态命名的文件夹时出现错误。我已经发布了工作代码,其中损坏的代码被注释掉了。我不确定该怎么做,欢迎任何建议。

ValueError: mode string must begin with one of 'r', 'w', 'a' or 'U', not
'dataC1-07-28-2013.csv'

这是代码,非工作代码被注释掉:

import urllib2
import datetime
#import os

today = datetime.date.today()
todayDate = today.strftime('%m-%d-%Y')

#newpath = '/home/blah/Data ' + todayDate
#if not os.path.exists(newpath): os.makedirs(newpath)

print "starting load for", todayDate

stub = "http://website.ashx?v=151&c="
for i in range(1, 66):
    print "getting", i, "..."
    data = urllib2.urlopen(stub + str(i)).read()
    f = open("fooC" + str(i) + "-" + todayDate +".csv", "w")
#   f = open('newpath',"fooC" + str(i) + "-" + todayDate +".csv", "w")
    f.write(data)
    f.close()

print "load complete!"
4

2 回答 2

3

您需要建立一个绝对路径,最好使用os.path.join()

f = open(os.path.join('newpath', "fooC" + str(i) + "-" + todayDate +".csv"), "w")

open()不采用单独的目录和文件名参数,第二个参数mode始终是参数。

于 2013-07-28T18:37:33.830 回答
1

在您注释掉的打开中,您输入了三个参数,而它只需要两个(可以在此处找到文档):文件名和打开它的模式(读取、写入等)。

为了在新的子目录中打开文件,您必须使用 os.path.join 来获取文件(您可以在此处阅读有关其工作原理的更多信息)。一个例子:

with open(os.path.join(path,filename), "w") as f:
    #Here do what you want with the file

希望这可以帮助。据我所知,在 with 块中打开文件也比像那样打开文件更安全。

于 2013-07-28T18:44:22.223 回答