-1

Web サイトをスキャンし、タイム スタンプ付きのフォルダーを作成し、タイム スタンプ付きのファイルをそのフォルダーにドロップするスクリプトを作成しようとしています。Web サイトをスキャンしてタイムスタンプ付きファイルを作成するスクリプトを取得できましたが、動的に名前が付けられたフォルダーを取得しようとするとエラーが発生します。壊れたコードをコメントアウトして、作業コードを投稿しました。どうすればいいのかわからないので、どんな提案でも大歓迎です。

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、常に 2 番目の引数が引数になります。

于 2013-07-28T18:37:33.830 に答える
1

コメントアウトされたオープンでは、ファイル名とそれを開くモード(読み取り、書き込みなど)の2つしか必要としないのに対し、3つの引数を入力します(ドキュメントはここにあります)。

新しいサブディレクトリでファイルを開くには、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 に答える