1

目前,我的脚本将 .txt 文件从 FTP 站点下载到本地目录(在检查目录是否已包含该文件之后),将每个文件转换为(单独的).csv。我需要将数据移植到 mysql 数据库中。

这是我遇到问题的部分:运行脚本的第二部分(选票阅读器),其中文件中的行被导入 SQL,当路径不是动态时(即 R:\path\filename),脚本工作和 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

问题可能与您构建路径的方式有关。尝试使用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 回答
0

谢谢@btel。这就是我的问题的解决方案。我的最终代码:

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