从另一个文件调用一个函数

时间:2011-12-02 23:34:40

标签: python

我正在python上编写代码,我必须从其他文件导入一个函数。我写了import filenamefilename.functionname,当我写函数名的第一个字母时,在PyCharm上弹出一个窗口,显示函数的全名,所以我猜Python知道该文件有我需要的功能。当我在控制台上尝试它时,它可以工作。但是,当我在代码上运行相同的操作时,它会出错:'module' object has no attribute 'get_ecc'。可能是什么问题呢?唯一的导入部分是最后一个函数make_qr_code

 """ Create QR error correction codes from binary data, according to the
 standards laid out at http://www.swetake.com/qr/qr1_en.html. Assumes the
 following when making the codes:
- alphanumeric text
- level Q error-checking
 Size is determined by version, where Version 1 is 21x21, and each version up
 to 40 is 4 more on each dimension than the previous version.
 """

import qrcode

class Polynomial(object):
""" Generator polynomials for error correction.
"""

# The following tables are constants, associated with the *class* itself
# instead of with any particular object-- so they are shared across all
# objects from this class.
# We break style guides slightly (no space following ':') to make the
# tables easier to read by organizing the items in lines of 8.


def get_ecc(binary_string, version, ec_mode):
    """ Create the error-correction code for the binary string provided, for
    the QR version specified (in the range 1-9).  Assumes that the length of
    binary_string is a multiple of 8, and that the ec_mode is one of 'L', 'M',
    'Q' or 'H'.
    """

    # Create the generator polynomial.
    generator_coeffs = get_coefficients(SIZE_TABLE[version, ec_mode][1])
    generator_exps = range(len(generator_coeffs) - 1, -1, -1)
    generator_poly = Polynomial(generator_coeffs, generator_exps)

    # Create the message polynomial.
    message_coeffs = []
    while binary_string:
        message_coeffs.append(qrcode.convert_to_decimal(binary_string[:8]))
        binary_string = binary_string[8:]
    message_max = len(message_coeffs) - 1 + len(generator_coeffs) - 1
    message_exps = range(message_max, message_max - len(message_coeffs), -1)
    message_poly = Polynomial(message_coeffs, message_exps)

    # Keep dividing the message polynomial as much as possible, leaving the
    # remainder in the resulting polynomial.
    while message_poly.exps[-1] > 0:
        message_poly.divide_by(generator_poly)

    # Turn the error-correcting code back into binary.
    ecc_string = ""
    for item in message_poly.coeffs:
        ecc_string += qrcode.convert_to_binary(item, 8)
    return ecc_string

0 个答案:

没有答案