1

現在、スクリプトは .txt ファイルを FTP サイトからローカル ディレクトリにダウンロードし (ディレクトリに既にファイルが含まれているかどうかを確認した後)、各ファイルを (個別の) .csv に変換します。mysql データベースに移植するデータが必要です。

私が問題を抱えている部分は次のとおりです。パスが動的でない場合(つまり、R:\ path \ filename)、スクリプトの2番目の部分(ballotreader)を実行すると、ファイルの行がSQLにインポートされます動作し、SQL テーブルが作成されます。パスが動的な場合 (つまり、'R:\path\'+filename)、何も設定されません。助言がありますか?

for filename in filenames:
    local_filename = os.path.join('R:\\path', filename)
    if os.path.isfile(local_filename) is False:
        print 'New file found.'
        file = open(local_filename, 'wb')
        ftp.retrbinary("RETR " + filename, file.write, 8*1024)
        file.close()
        print 'Downloaded '+filename+' file'
        txt_file = r""+filename
        csv_file = r""+filename+".csv" 
        in_txt = csv.reader(open(txt_file, "rb" ),delimiter = '|')
        outcsv = csv.writer(open(csv_file,'wb'))
        outcsv.writerows(in_txt)

        with open("R:\\path"+csv_file,'rb') as csv_input:
            ballotreader = csv.reader(csv_input, delimiter=',',quotechar ='|') 
            for row in ballotreader:  
                cursor = db.cursor()  
                if row[1] > 0:  
4

2 に答える 2

0

ありがとう@btel。それが私の問題の解決策です。私の最終的なコード:

    with open(csv_file,'wb') as outcsv:
        out = csv.writer(outcsv, delimiter = '|')
        out.writerows(in_txt)
于 2012-10-29T19:07:13.143 に答える
0

問題はおそらくパスの作成方法にあります。使ってみてくださいos.path.join:

import os

path = os.path.join("R:\\path",csv_file)
with open(path,'rb') as csv_input:
...
于 2012-10-25T23:12:37.067 に答える