使用变量生成文件名

时间:2014-03-31 08:25:13

标签: python

以下代码按预期工作。它将excel表保存到不同的csv文件中,每个文件名为sheetname.csv。我尝试的唯一更改是将文件名添加到csv文件中。像data.xls.sheetname.csv

之类的东西
# -*- coding: utf-8 -*-
import xlrd
import csv
from os import sys

def csv_from_excel(excel_file):
    workbook = xlrd.open_workbook(excel_file)
    all_worksheets = workbook.sheet_names()
    for worksheet_name in all_worksheets:
        worksheet = workbook.sheet_by_name(worksheet_name)
        your_csv_file = open(''.join([worksheet_name,'.csv']), 'wb')
        wr = csv.writer(your_csv_file, quoting=csv.QUOTE_ALL)

        for rownum in xrange(worksheet.nrows):
            wr.writerow([unicode(entry).encode("utf-8") for entry in worksheet.row_values(rownum)])
        your_csv_file.close()

if __name__ == "__main__":
    csv_from_excel(sys.argv[1])

以下更改无法按预期工作:

your_csv_file = open(''.join([excel_file,worksheet_name,'.csv']), 'wb')

以下内容也不起作用:

your_csv_file = open(''.join([worksheet_name,'.csv']).join([excel_file]), 'wb')

3 个答案:

答案 0 :(得分:3)

由于您需要在所有名称之间使用句点,因此请使用.作为加入者:

'.'join([excel_file, worksheet_name, 'csv'])

您目前得到的是data.xlssheetname.csv,这不是您所期望的。

答案 1 :(得分:1)

您可以尝试:

your_csv_file = open(excel_file+''.join([worksheet_name,'.csv']), 'wb')

答案 2 :(得分:1)

您可以使用简单的格式声明:

your_csv_filename = "{}.{}.{}".format(excel_file, worksheet_name, "cvs")
your_csv_file = open(your_csv_filename, 'wb')