这是我的代码,它从文档excel文件中加载电子表格,并创建一个csvTranslations.csv,translations.py和translations.xlsx。问题是它创建了一个空白的translattions.xlsx文件,而我不知道我做错了什么。
import os
import random
import re
import csv
import requests
import io
import sys
import copy
import xlrd
import codecs
import time
import xlrd
from collections import OrderedDict
import simplejson as json
import xlsxwriter
from pandas.io.excel import ExcelWriter
import pandas
import openpyxl
from openpyxl import Workbook
from openpyxl.utils import get_column_letter
from openpyxl import load_workbook
from openpyxl.utils import get_column_letter
将要调用的函数
def gen_translations():
try:
import xlrd
except:
print "Missing xlrd module!"
return
#return
csv_file = 'translations.xlsx'
if not os.path.exists(csv_file):
print "Unable to update translations due to missing csv file!"
return
print "updating translations..."
o = open("translations.py", "wb")
指向谷歌文档的
链接
url = "https://docs.google.com/spreadsheets/d/1g3nk_yzQxQFSxPN2lCvWwiHH8MgAqhpu5S763FRD_5I/gviz/tq?tqx=out:csv&sheet=translations"
r = requests.get(url, verify=False)
ow = io.open("csvTranslations.csv", "wb")
ow.write(r.content)
ow.close()
try:
print >> o, header
except:
print >> o, "#CANNOT PRINT HEADER:%s" % repr(header)
with open("csvTranslations.csv", "rb") as csvfile:
docreader = csv.reader(csvfile)
headers = next(docreader)
for row in docreader:
decoded_row = [entry.decode("utf8") for entry in row]
decoded_row[6] = translate(decoded_row[2], to_X)
try:
id = int(decoded_row[0])
except:
break
keyword = decoded_row[1]
languages = decoded_row[2:]
'''
try:
print u" ; ".join(languages)
except:
print "#CANNOT PRINT:%s"%repr(languages)
'''
try:
print >> o, " %s = Word(%d, %s)" % (keyword, id, languages)
except:
print >> "ERROR: CANNOT PRINT %s = Word(%d,%s)" % (repr(keyword), id, repr(languages))
try:
print >> o, footer
except:
print >> o, "#ERROR CANNOT PRINT FOOTER:%s" % repr(footer)
o.close()
print "done!"
问题似乎出在这里,因为csvTranslations和translations.py都在编写中,但translations.xlsx不是
csv.register_dialect('colons', delimiter=',')
reader = csv.reader(csvfile, dialect='colons')
wb = Workbook()
dest_filename = r"translations.xlsx"
ws = wb.worksheets[0]
for row_index, row in enumerate(reader):
for column_index, cell in enumerate(row):
column_letter = get_column_letter((column_index + 1))
ws['%s%s'%(column_letter, (row_index + 1))].value = cell
wb.save(filename=dest_filename)
发布于 2018-07-14 05:44:12
看起来你试图把"csvTranslations.csv“通读两遍,但是你只打开了文件一次。因此,一旦您的脚本完成读取以写入translations.py,指向csvTranslations.csv的文件指针现在位于文件的末尾,进一步尝试从csvfile读取不会返回任何数据(相反,它们指示“您已经在文件的末尾!”,从而导致您在for row_index, row in enumerate(reader):
处的循环退出。)解决这个问题的最简单方法是在reader = csv.reader(csvfile, dialect='colons')
行之前第二次打开csvTranslations.csv;这会给您一个指向文件的新指针,这个指针回到了开头。
https://stackoverflow.com/questions/51332723
复制相似问题