Python TypeError:只能将元组(不是“str”)连接到元组

时间:2014-03-17 23:44:45

标签: python encryption tuples

我知道还有其他几个问题问同样的问题,但是当我跑步时:     导入命令     来自pyDes import *

def encrypt(data, password,):
    k = des(password, CBC, "\0\0\0\0\0\0\0\0", pad=None, padmode=PAD_PKCS5,)
    d = k.encrypt(data,)
    return d
def decrypt(data, password,):
    k = des(password, CBC, "\0\0\0\0\0\0\0\0", pad=None, padmode=PAD_PKCS5,)
    d = k.decrypt(data,)
    return d
command1 = commands.getstatusoutput('ifconfig',)
encrypted = encrypt(command1, '12345678',)

我明白了:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "<stdin>", line 3, in encrypt
  File "build/bdist.macosx-10.6-universal/egg/pyDes.py", line 658, in encrypt
  File "build/bdist.macosx-10.6-universal/egg/pyDes.py", line 195, in _padData
TypeError: can only concatenate tuple (not "str") to tuple

我再次知道这已被问过几次,但我似乎无法通过将逗号放在正确的位置来完成这项工作,就像其他问题一样。

1 个答案:

答案 0 :(得分:1)

该函数期望将一元素元组作为参数。要在Python中明确指定单元素元组,需要使用括号:

tuple_containing_only_zero = (0,)   # note the comma!

逗号是Python中元组的实际构造函数,因此您可以在不需要括号的情况下指定更长的元组:

>>> longer_tuple = 1, 2, 3, 4, 5
>>> longer_tuple
(1, 2, 3, 4, 5)

但是如果你正在调用一个函数:

f(x, y,)   # is y a 1-tuple or a SyntaxError?

没有parens的单元组将是丑陋和模糊的。