在python中打开包含元组的文件

时间:2015-12-04 09:59:16

标签: python python-3.x

如何在包含带有元组的元组的python中打开一个文件而不改变它。

我的问题是当我$sql = "SELECT email FROM users WHERE email = :email LIMIT :val "; $dbh = $this->db->prepare($sql); $dbh->bindParam(':email', $email, PDO::PARAM_STR); $dbh->bindParam(':val', 1, PDO::PARAM_INT); $dbh->execute(); $n = $dbh->rowCount(); if($n>0){ return TRUE;// return true here }else{ return FALSE;// return false if not found in database } 时,它变成了一个字符串,元组之间的空格消失了。我会收到这样的话:

    function toggleAreas1() {
    var $hide = $('[class^=toggle-areas] > .row:visible').each(function(){
    $(this).fadeOut(function() {
    // do what you need
    });
});

如何在不修改的情况下打开它?

2 个答案:

答案 0 :(得分:0)

只需将python代码写入或粘贴到元组即可。这样你之前的元组变成了一个字符串并失去了它的功能。 Python标准库中包含一个模块pickle,可用于此目的。 Pickle只需将数据转换为带有pickle.dumps函数的字节字符串,您可以将其写入文件,只需读取文件并将字符串插入pickle.loads函数即可帮助您恢复元组原始形式。 我在下面举了一个例子:

>>> import pickle
>>> s = (2, 3, 5, 7, 11, 13)
>>> data = pickle.dumps(s)
>>> data
b'\x80\x03(K\x02K\x03K\x05K\x07K\x0bK\rtq\x00.'
>>> print(pickle.loads(data))
(2, 3, 5, 7, 11, 13)

我希望你对这是如何运作有所了解。

答案 1 :(得分:0)

将类似元组的字符串转换回元组的示例:

>>> e = '(((3,),(5,),(3,1),(2,1),(3,3,4),(2,2,7),(6,1,1),(4,2,2),(1,1),(3,1),(6,),(2,7),(6,3,1),(1,2,2,1,1),(4,1,1,3),(4
,2,2),(3,3,1),(3,3),(3,),(2,1)),((2,),(1,2),(2,3),(2,3),(3,1,1),(2,1,1),(1,1,1,2,2),(1,1,3,1,3),(2,6,4),(3,3,9,1),(5,3,2
),(3,1,2,2),(2,1,7),(3,3,2),(2,4),(2,1,2),(2,2,1),(2,2), (1,),(1,)))'
>>> type(e)
<class 'str'>

>>> import ast
>>> t = ast.literal_eval(e)
>>> type(t)
<class 'tuple'>
>>> t
(((3,), (5,), (3, 1), (2, 1), (3, 3, 4), (2, 2, 7), (6, 1, 1), (4, 2, 2), (1, 1), (3, 1), (6,), (2, 7), (6, 3, 1), (1, 2
, 2, 1, 1), (4, 1, 1, 3), (4, 2, 2), (3, 3, 1), (3, 3), (3,), (2, 1)), ((2,), (1, 2), (2, 3), (2, 3), (3, 1, 1), (2, 1,
1), (1, 1, 1, 2, 2), (1, 1, 3, 1, 3), (2, 6, 4), (3, 3, 9, 1), (5, 3, 2), (3, 1, 2, 2), (2, 1, 7), (3, 3, 2), (2, 4), (2
, 1, 2), (2, 2, 1), (2, 2), (1,), (1,)))