首页 > 为什么python 定义方法后模块不能用?

为什么python 定义方法后模块不能用?

写了一段处理excel文件的代码,不使用def定义方法的时候可以正常运行,结果也是我想要的。但我定义方法,再次运行的时候,出现报错。

from __future__ import division

import xlrd
import xlwt
from xlutils.copy import copy
import time
import datetime
from datetime import date
import pandas as pd
import numpy as np
from pandas import DataFrame
import os,sys
from xlrd import open_workbook
from time import sleep, ctime
import threading

s='请输入文件:'
excelbook=raw_input(s.decode('utf-8').encode('gb2312')).strip()
workbook=xlrd.open_workbook(excelbook)
def readexcel():
    # workbook = xlrd.open_workbook(r'D:\python\excel\fwqall.xls')
    sheet = workbook.sheets()[0]
    allrow = sheet.nrows
    col6 = sheet.col_values(6)  # 获取第6列内容
    col7 = sheet.col_values(7)
def time():
    readexcel()    
    wb = xlutils.copy(workbook)
    ws = wb.get_sheet(0)  # 获取第一个工作表
    date_tmp = []
    pbar = ProgressBar().start()
    for rw in range(allrow):
        if sheet.cell(rw, 6).ctype == 2:  # 第六列转换为日期
            date_value = xlrd.xldate_as_tuple(
                sheet.cell_value(rw, 6), workbook.datemode)
            date_tmp = date(*date_value[:3]).strftime('%Y,%m,%d')
    #        print date_tmp
            for rs in range(allrow):
                ws.write(rw, 6, date_tmp)     # 写入    
            wb.save(excelbook)
…………

if __name__ == '__main__':
    for t in threads:
        t.setDaemon(True)
        t.start()
    print 'all over %s'%ctime()

出现报错:

Exception in thread Thread-1:
Traceback (most recent call last):
  File "c:\python27\lib\threading.py", line 801, in __bootstrap_inner
    self.run()
  File "c:\python27\lib\threading.py", line 754, in run
    self.__target(*self.__args, **self.__kwargs)
  File "D:\python\excel\src\1\1.1.py", line 30, in time
    wb = copy(workbook)
NameError: global name 'copy' is not defined

请问这样该如何处理?
本人python刚入门,求指点,谢谢。


调用的是xlutils.copy但是你 from xlutils.copy import copy不一致吧

应该是直接调用copy

【热门文章】
【热门文章】