【问题标题】:How to convert XLS to CSV files using python?如何使用 python 将 XLS 转换为 CSV 文件?
【发布时间】:2015-11-11 06:00:48
【问题描述】:

我正在使用QGIS 2.8.1 的python 控制台。我想使用 python 将许多xls 文件转换为csv 格式。我的输入目录是:D:\PATRICIA\TESTE\XLS,输出是:D:\PATRICIA\TESTE\CSV2。我根据您的建议(Converting xls file into csv/txt file in Python)编写了这段代码,并在不同日期的不同文件中开发了它1999/01/2 直到1999/01/31 为:RR_1999_1_2.xlsRR_1999_1_3.xls,...RR_1999_1_31.xls

我不知道为什么我的脚本不起作用。这意味着什么都没发生!

我的脚本是

import xlrd
import csv
import datetime as dt
from datetime import timedelta

#initial and final dates 
data1='19990102'
data2='19990131'

anoi = int(data1[:4])
mesi = int(data1[4:6])
diai = int(data1[6:8])
anof = int(data2[:4])
mesf = int(data2[4:6])
diaf = int(data2[6:8])

start_date = dt.datetime(anoi, mesi, diai)
end_date = dt.datetime(anof, mesf, diaf)

total_days = (end_date - start_date).days + 1


for day in xrange(0, total_days):
        current_date = (start_date + dt.timedelta(days = day)).date()
        file_date = str(current_date.year)+'_'+str(current_date.month)+'_'+str(current_date.day)

        srt1='D:/PATRICIA/TESTE/XLS/RR_'+file_date+'.xls'
        srt2='D:/PATRICIA/TESTE/CSV2/RR_'+file_date+'.csv'

        def xls_to_csv():

            x =  xlrd.open_workbook(str1)
            x1 = x.sheet_by_name('Sheet1')
            csvfile = open(str2, 'wb')
            writecsv = csv.writer(csvfile, quoting=csv.QUOTE_ALL)

            for rownum in xrange(sh.nrows):
                writecsv.writerow(x1.row_values(rownum))

            csvfile.close()

有什么帮助吗?

谢谢。

【问题讨论】:

    标签: python excel csv xls qgis


    【解决方案1】:

    除非我错过了重要的事情,否则您声明函数xls_to_csv 在循环中,但永远不要调用它。您的脚本的一般结构应该是:

    #initializations
    data1='19990102'
    ...
    total_days = (end_date - start_date).days + 1
    
    # function definition:
    def xls_to_csv(str1, str2):
        x =  xlrd.open_workbook(str1)
        x1 = x.sheet_by_name('Sheet1')
        csvfile = open(str2, 'wb')
        writecsv = csv.writer(csvfile, quoting=csv.QUOTE_ALL)
    
        for rownum in xrange(sh.nrows):
            writecsv.writerow(x1.row_values(rownum))
    
        csvfile.close()
    
    # loop
    for day in xrange(0, total_days):
            current_date = (start_date + dt.timedelta(days = day)).date()
            file_date = str(current_date.year)+'_'+str(current_date.month)+'_'+str(current_date.day)
    
            srt1='D:/PATRICIA/TESTE/XLS/RR_'+file_date+'.xls'
            srt2='D:/PATRICIA/TESTE/CSV2/RR_'+file_date+'.csv'
            xls_to_csv(srt1, srt2)  # function call
    

    【讨论】:

    • 感谢 Serge Ballesta,但出现了这个错误:Traceback(最近一次调用最后一次):文件“”,第 1 行,在 文件“D:/PATRICIA/IG/PYTHON_SCRIPTS/ ConvertXlsToCsv.py", line 30, in xls_to_csv(srt1, srt2) # function call File "D:/PATRICIA/IG/PYTHON_SCRIPTS/ConvertXlsToCsv.py", line 18, in xls_to_csv for rownum in xrange(sh.nrows ): NameError: 全局名称 'sh' 未定义
    猜你喜欢
    • 1970-01-01
    • 2014-03-13
    • 2020-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-28
    • 2014-07-10
    相关资源
    最近更新 更多