锘??xml version="1.0" encoding="utf-8" standalone="yes"?>免费试看一区,另类春色校园亚洲,女生裸体视频一区二区三区http://m.shnenglu.com/jinq0123/category/5138.htmlzh-cnWed, 21 Nov 2018 04:18:53 GMTWed, 21 Nov 2018 04:18:53 GMT60vs2017 linux 緙栬瘧杈撳嚭鏀規垚 vs 鏍煎紡http://m.shnenglu.com/jinq0123/archive/2018/11/21/216073.html閲戝簡閲戝簡Wed, 21 Nov 2018 02:57:00 GMThttp://m.shnenglu.com/jinq0123/archive/2018/11/21/216073.htmlhttp://m.shnenglu.com/jinq0123/comments/216073.htmlhttp://m.shnenglu.com/jinq0123/archive/2018/11/21/216073.html#Feedback0http://m.shnenglu.com/jinq0123/comments/commentRss/216073.htmlhttp://m.shnenglu.com/jinq0123/services/trackbacks/216073.htmlvs2017 linux 緙栬瘧杈撳嚭鏀規垚 vs 鏍煎紡
(閲戝簡鐨勪笓鏍?2018.11)
 1 #!/usr/bin/python 
 2 # -*- coding: utf-8 -*-  
 3 
 4 '''
 5 gcc2vs.py
 6 
 7 鍔熻兘錛?br /> 8 灝嗗壀鍒囨澘涓璯cc鐨勭紪璇戣緭鍑烘牸寮忚漿鎴恦s鏍煎紡錛岀敤浜巚s璺寵漿鍒伴敊璇銆?br /> 9 vs2017 linux 緙栬瘧杈撳嚭涓?nbsp;gcc 鏍煎紡錛屾棤娉曠偣鍑昏煩杞紝濡傦細
10 /var/tmp/src/dbe/Linux-Debug/Src/Team.cpp:16:1: 閿欒錛?#8216;x’涓嶆槸涓涓被鍨嬪悕
11 欏昏漿涓簐s鏍煎紡, 濡?br />12 /var/tmp/src/dbe/Linux-Debug/Src/Team.cpp(16):1: 閿欒錛?#8216;x’涓嶆槸涓涓被鍨嬪悕
13 
14 濡備綍浣跨敤錛?br />15 
16 棣栧厛欏誨畨瑁?nbsp;python, 騫跺畨瑁?nbsp;pyperclip
17 pip install pyperclip
18 
19 鍋囪鏈枃浠朵負 d:/tools/gcc2vs.py,
20 vs璁劇疆澶栭儴宸ュ叿錛氬伐鍏?>澶栭儴宸ュ叿->娣誨姞
21   鏍囬錛歡cc2vs(&V)
22   鍛戒護錛歱ython.exe
23   鍙傛暟錛歞:/tools/gcc2vs.py
24   閫変腑"浣跨敤杈撳嚭紿楀彛"
25 
26 鍙傝冿細VS2010鎵嬪姩娣誨姞澶栭儴宸ュ叿鍜屽揩鎹烽敭  
27 https://www.cnblogs.com/ChinaHook/p/4698733.html
28 
29 褰揕inux鏋勫緩杈撳嚭鍚庯紝鐐瑰嚮杈撳嚭紿楀彛錛宑trl-A 閫夋嫨鍏ㄩ儴錛宑trl-C 澶嶅埗杈撳嚭鍒板壀鍒囨澘錛?br />30 鐒跺悗 alt-T,V 榪愯娣誨姞鐨勫閮ㄥ伐鍏?nbsp;gcc2vs(&V), 鏇存敼杈撳嚭鏍煎紡錛岀劧鍚庡氨鍙互鐐瑰嚮閿欒璺寵漿浜嗐?br />31 '''
32 
33 import re
34 import pyperclip
35 
36 # 寰呮浛鎹㈢殑鏍煎紡
37 pattern = re.compile(r'/var/tmp/src/..-.-.-.-/Linux-Debug/(.*):([0-9]*):([0-9]*): ')
38 
39 test_lines_src = '''
40 /var/tmp/src/db71a8ec-90bb-2838-98df-2dd35e71166e/Linux-Debug/003_servers/103_LobbyServer/Src/Team.cpp:16:1: 閿欒錛?#8216;x’涓嶆槸涓涓被鍨嬪悕
41 鐢熸垚澶辮觸銆?br />42 '''
43 test_lines_dst = '''
44 003_servers/103_LobbyServer/Src/Team.cpp(16):1: 閿欒錛?#8216;x’涓嶆槸涓涓被鍨嬪悕
45 鐢熸垚澶辮觸銆?br />46 '''
47 assert test_lines_dst == re.sub(pattern, r'\1(\2):\3: ', test_lines_src)
48 
49 # 鍓垏鏉夸腑鐨刧cc鏍煎紡杈撳嚭
50 src = pyperclip.paste()
51 # 杞垚vs鏍煎紡
52 dst = re.sub(pattern, r'\1(\2):\3: ', src)
53 print(dst)
54 


閲戝簡 2018-11-21 10:57 鍙戣〃璇勮
]]>
xlsx鎵歸噺杞負utf8鐨刢svhttp://m.shnenglu.com/jinq0123/archive/2015/10/30/212153.html閲戝簡閲戝簡Fri, 30 Oct 2015 08:05:00 GMThttp://m.shnenglu.com/jinq0123/archive/2015/10/30/212153.htmlhttp://m.shnenglu.com/jinq0123/comments/212153.htmlhttp://m.shnenglu.com/jinq0123/archive/2015/10/30/212153.html#Feedback0http://m.shnenglu.com/jinq0123/comments/commentRss/212153.htmlhttp://m.shnenglu.com/jinq0123/services/trackbacks/212153.htmlxlsx鎵歸噺杞負utf8鐨刢sv

(閲戝簡鐨勪笓鏍?

絳栧垝鐨勯厤緗〃涓?xlsx 琛ㄦ牸錛屽彲浠ユ湁娉ㄩ噴錛屽叕寮忋?br />鏈嶅姟鍣ㄥ拰瀹㈡埛绔嬌鐢ㄧ殑閰嶇疆鏂囦歡闇瑕佽漿鎴?csv 鏂囦歡銆?br />浣跨敤 WPS 鍙﹀瓨鏃犳硶鎵歸噺杞崲錛屽茍涓旂粨鏋滀笉鏄痷tf8緙栫爜鐨勶紝榪橀渶瑕佺敤Notepad++杞紪鐮併?br />
闄や簡 xlsx 杞負 csv, 鍏朵粬鏍煎紡鏂囦歡淇濇寔鍘熸牱錛屽 *.ini, *.xml, *.lua.
server/ 瀛愮洰褰曠壒孌婂鐞嗭紝涓嶈兘澶嶅埗鍒板鎴風銆?br />
鐢╬ython鑴氭湰瀹炵幇錛屼緷璧?openpyxl 搴撱?br />
#!/usr/bin/env python
# coding: utf-8
# datatab.py
# 浠庣瓥鍒掗厤緗〃鐩綍 game\Design\閰嶇疆琛╘”
#   鐢熸垚鏈嶅姟鍣ㄧ殑 game\Program\server\six\datatab\” 鐩綍錛?br />#   鍜屽鎴風鐨?game\Program\client\Assets\Config\” 鐩綍銆?br />#   鎵鏈墄lsx鏂囦歡鐢熸垚csv鏂囦歡錛屽叾浠栨枃浠跺師鏍峰鍒躲?br />#   鍏朵腑 server\ 鐩綍鐗規畩澶勭悊錛屼粎瀵規湇鍔″櫒鏈夋晥錛屽鎴風璺寵繃銆?
#
# 渚濊禆openpyxl搴擄細http://openpyxl.readthedocs.org/en/latest/
# 鍙傝冧唬鐮?http://segmentfault.com/q/1010000003006437?_ea=273128
# 嫻嬭瘯鐜錛歅ython3.4

# Usage: datatab.py <game dir>
# Example: datatab.py "d:\game"
# <game dir> 鏄牴鐩綍錛屽寘鍚獶esign/, Program/ 鐩綍銆?br />
from openpyxl import Workbook
from openpyxl.compat import range
from openpyxl.cell import get_column_letter
from openpyxl import load_workbook
import csv
import os
import sys
import shutil

def xlsx2csv(filename):
    # try:
        xlsx_file_reader = load_workbook(filename = filename, data_only = True)
        for sheet in xlsx_file_reader.get_sheet_names():
            # 浠呯1涓猻heet杈撳嚭鍒頒竴涓猚sv鏂囦歡涓紝鏂囦歡鍚嶅悗緙鏇挎崲涓?csv
            csv_filename = os.path.splitext(filename)[0] + '.csv'
            csv_file = open(csv_filename, 'w', encoding='utf8', newline='')
            csv_file_writer = csv.writer(csv_file)
            sheet_ranges = xlsx_file_reader[sheet]
            for row in sheet_ranges.rows:
                row_container = []
                for cell in row:
                    row_container.append(cell.value)
                csv_file_writer.writerow(row_container)
            # End of for row.
            csv_file.close()
            break  # 浠呰緭鍑虹1涓猻heet
        # End of for sheet.
    # End of try.
    # except Exception as e:
    #    print(e)
# End of xlsx2csv().

def datatab_convert(game_dir):
    '''浠?game\Design\閰嶇疆琛╘ 杈撳嚭鍒?br />      game\Program\server\six\datatab\
      game\Program\client\Assets\Config\
    '''
    design_dir = os.path.join(game_dir, 'Design/閰嶇疆琛?')
    server_dir = os.path.join(game_dir, 'Program/server/six/datatab/')
    client_dir = os.path.join(game_dir, 'Program/client/Assets/Config/')
    
    # 鍒犻櫎鏃ф枃浠躲?br />    print("Delete " + server_dir)
    try:
        shutil.rmtree(server_dir)
    except:
        pass
    print("Delete " + client_dir)
    try:
        shutil.rmtree(client_dir)
    except:
        pass    

    # 鐢熸垚server鏂囦歡
    print("Creating " + server_dir)
    shutil.copytree(design_dir, server_dir)
    files = get_files(server_dir)
    convert_files(files)
    
    # 澶嶅埗client鏂囦歡
    print("Copy " + client_dir)
    shutil.copytree(server_dir, client_dir)
    shutil.rmtree(os.path.join(client_dir, 'server/'))
    print("Done. Total files: %d" % len(files))
# End of datatab_convert().    

def get_files(dir):
    '''Get a list of files under input dir.'''
    result = []
    for root,dirs,files in os.walk(dir):
        for f in files:
            result.append(os.path.join(root, f))
    return result
# End of get_files().            

def convert_files(files):
    '''杞崲涓鎵規枃浠?
    files 鏄垪琛紝鍏冪礌涓哄畬鏁磋礬寰勫悕銆?br />    '''
    for f in files:
        ext = os.path.splitext(f)[1].lower()
        if '.xlsx' != ext:
            print(f + " -> keep")
            continue
        print(f + " -> csv")
        xlsx2csv(f)
        os.remove(f)
# End of convert_files().        

if __name__ == '__main__':
    if len(sys.argv) != 2:
        print('usage: datatab <game dir>')
    else:
        datatab_convert(sys.argv[1])
    sys.exit(0)


# Usage: datatab.py <game dir>
# Example: datatab.py "d:\game"
# <game dir> 鏄疭VN鏍圭洰褰曪紝鍖呭惈Design/, Program/ 鐩綍銆?br />
涓烘柟渚夸嬌鐢紝灝哾atatab.py 鎵撳寘鎴?exe, 榪欐牱涓嶈兘瀹夎Python灝辮兘榪愯銆?br />涓嬭澆騫跺畨瑁匬ython3, 瀹夎openpyxl鍖咃紝淇濊瘉鏈湴鍙互榪愯 datatab.py.
涓嬭澆騫跺畨瑁匬yInstaller錛?br />    pip install pyinstaller
榪愯
    pyinstaller --onefile datatab.py

ImportError: No module named 'jdcal'
鍙兘openpyxl瀹夎鏃惰嚜甯︾殑jdcal鏃犳硶鎵懼埌錛屽垹闄?
C:\Python34\Lib\site-packages\jdcal-1.0-py3.4.egg
閲嶆柊瀹夎錛歱ip install jdcal
   

閲戝簡 2015-10-30 16:05 鍙戣〃璇勮
]]>
濡備綍榪愯 rpcz python example http://m.shnenglu.com/jinq0123/archive/2013/12/11/204705.html閲戝簡閲戝簡Wed, 11 Dec 2013 02:12:00 GMThttp://m.shnenglu.com/jinq0123/archive/2013/12/11/204705.htmlhttp://m.shnenglu.com/jinq0123/comments/204705.htmlhttp://m.shnenglu.com/jinq0123/archive/2013/12/11/204705.html#Feedback0http://m.shnenglu.com/jinq0123/comments/commentRss/204705.htmlhttp://m.shnenglu.com/jinq0123/services/trackbacks/204705.html璇曠潃榪愯 rpcz-python 鐨?example銆傝繃紼嬭褰曞涓嬨?br />
鍋囪protobuf-py宸茬粡鎸夌収protobuf鐨勫畨瑁呰鏄庡畨瑁呬簡銆?br />鍙戠幇 protobuf-2.5.0鐗堢殑python鍖呮槸python2鐨勶紝娌℃湁鎵懼埌python3鐨勩?br />璇曠潃2to3.py杞崲涓涓嬶紝緇撴灉杞崲鍚庢棤娉曞畨瑁呫?br />鍙ソ灝唒ython3.3鎹㈡垚python2.7

python2.7鐨刴imetypes.py鏈夐敊璇紝娉ㄥ唽琛ㄤ腑HKEY_CLASSES_ROOT鏈変腑鏂囩殑鎵╁睍鍚嶆椂錛?br />瀹夎setuptools澶辮觸錛屽弬鑰?http://www.oschina.net/question/1409342_134600

鍏堢紪璇?rpz, 灝嗙敓鎴愮殑
protoc-gen-cpp_rpcz.exe
protoc-gen-python_rpcz.exe
澶嶅埗鍒扮郴緇熸悳绱㈢洰褰曪紝濡備笌protoc.exe鏀懼湪涓璧楓?br />
榪涘叆 rpcz 鐨?python 鐩綍錛岃繍琛?br />python setup.py install

鍑虹幇濡備笅鐨勫悇縐嶉敊璇細
../include\rpcz/connection_manager.hpp(21) : fatal error C1083: Cannot open incl
ude file: 'boost/function.hpp': No such file or directory
../include\rpcz/macros.hpp(20) : fatal error C1083: Cannot open include file: 'g
oogle/protobuf/stubs/common.h': No such file or directory
../include\rpcz/rpc.hpp(24) : fatal error C1083: Cannot open include file: 'rpcz
/rpcz.pb.h': No such file or directory
LINK : fatal error LNK1181: cannot open input file 'rpcz.lib'
LINK : fatal error LNK1104: cannot open file 'libboost_thread-vc100-mt-1_54.lib'

鐩存帴鏀逛簡setup.py濡備笅銆?br />
    ext_modules=[
        Extension("rpcz.pywraprpcz", ["cython/pywraprpcz.cpp"],
                  libraries=["rpcz", "libprotobuf", "libzmq"],
                  include_dirs=['../include', '../build/src',
                      'D:/Boost/include/boost-1_54',
                      'G:/workspace/rpcz_jinq/src',
                      'D:/LibSrc/protobuf-2.5.0/vsprojects/include'],
                  library_dirs=['../build/deps/lib', '../build/src/rpcz',
                      'D:/Boost/lib',
                      'G:/workspace/rpcz_jinq/src/rpcz/Release',
                      'D:/LibSrc/zeromq-4.0.3/builds/msvc/Release',
                      'D:/LibSrc/protobuf-2.5.0/vsprojects/Release'],
                  language='c++')
    ],


涓嶇煡閬撳浣曞仛鎴愰氱敤鐨勮剼鏈?br />rpcz鍘熸潵搴旇鏄緩绔嬩竴涓浐瀹氫綅緗殑build鐩綍錛屽叾涓湁deps鐩綍錛屽寘鍚墍鏈夊簱銆?br />榪欏氨瑕佹眰cmake鐨勬瀯寤虹洰褰曞浐瀹氫負build.
 
python2.7鏄敤VC2008緙栬瘧鐨勶紝鐢╒C2010緙栬瘧python鎵╁睍浼氭湁闂銆?br />浼氭姤閿欙細
error: Unable to find vcvarsall.bat
寮哄埗浣跨敤VC2010:
SET VS90COMNTOOLS=%VS100COMNTOOLS%
鍙傝冿細http://stackoverflow.com/questions/2817869/error-unable-to-find-vcvarsall-bat

鏈鍚庤繘鍏?examples\python錛屽厛 generate_protos.gy 鐢熸垚娑堟伅鍜屾帴鍙o紝鐒跺悗榪愯 server, client.
榪愯鏃墮渶瑕?libzmq.dll, rpcz.dll.

閲戝簡 2013-12-11 10:12 鍙戣〃璇勮
]]>
Windows涓奝ython璇誨彇stdin鍑洪敊http://m.shnenglu.com/jinq0123/archive/2012/04/11/170873.html閲戝簡閲戝簡Wed, 11 Apr 2012 02:56:00 GMThttp://m.shnenglu.com/jinq0123/archive/2012/04/11/170873.htmlhttp://m.shnenglu.com/jinq0123/comments/170873.htmlhttp://m.shnenglu.com/jinq0123/archive/2012/04/11/170873.html#Feedback0http://m.shnenglu.com/jinq0123/comments/commentRss/170873.htmlhttp://m.shnenglu.com/jinq0123/services/trackbacks/170873.htmlWindows涓奝ython璇誨彇stdin鍑洪敊

錛堥噾搴嗙殑涓撴爮錛?br />
涓孌電畝鍗曠殑浠g爜錛岃鍙杝tdin, 鏇挎崲杈撳嚭鍒皊tdout:

#!/usr/bin/env python
import os, sys
input_file = sys.stdin
output_file = sys.stdout
for s in input_file:
    output_file.write(s.replace("abc", "def"))

浠g爜鏀硅嚜CookBook鐨?nbsp;   
Recipe 2.3. Searching and Replacing Text in a File

鍦↙inux涓婅繍琛屾甯革細
$ cat input.txt | ./replace.py
 
浣嗘槸鍦╓indows鐨凞os紿楀彛榪愯浼氭姤閿欙細
> type input.txt | replace.py
Traceback...
    for s in input_file:
IOError: [Errno 9] Bad file descriptor

濡傛灉鐢╬ython璋冪敤灝辨甯革細
> type input.txt | python replace.py

鍘熷洜鏄痗md.exe閫氳繃鍚庣紑鍏寵仈榪愯py鏂囦歡瀛樺湪闂銆?br />璇﹁錛欱ad pipe filedescriptor when reading from stdin in python
http://stackoverflow.com/questions/1057638/bad-pipe-filedescriptor-when-reading-from-stdin-in-python

It seems that stdin/stdout redirect does not work when starting from a file association. This is not specific to python, but a problem caused by win32 cmd.exe.


閲戝簡 2012-04-11 10:56 鍙戣〃璇勮
]]>
寤虹珛Socket Policy鏈嶅姟鍣?/title><link>http://m.shnenglu.com/jinq0123/archive/2012/01/19/164375.html</link><dc:creator>閲戝簡</dc:creator><author>閲戝簡</author><pubDate>Thu, 19 Jan 2012 08:21:00 GMT</pubDate><guid>http://m.shnenglu.com/jinq0123/archive/2012/01/19/164375.html</guid><wfw:comment>http://m.shnenglu.com/jinq0123/comments/164375.html</wfw:comment><comments>http://m.shnenglu.com/jinq0123/archive/2012/01/19/164375.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/jinq0123/comments/commentRss/164375.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/jinq0123/services/trackbacks/164375.html</trackback:ping><description><![CDATA[<div>寤虹珛Socket Policy鏈嶅姟鍣?br /><br />錛堥噾搴嗙殑涓撴爮錛?br /><br />Flash鍜孶nity3D娓告垙鏈嶅姟鍣ㄩ渶瑕佸紑鍚竴涓猄ocket Policy鏈嶅姟鍣ㄣ?br />璇︾粏璇存槑瑙侊細Setting up a socket policy file server<br />http://www.adobe.com/devnet/flashplayer/articles/socket_policy_files.html<br /><br />鍗忚濡備笅錛?br />Flash鎴朥3D鎾斁鍣ㄥ悜Socket Policy鏈嶅姟鍣ㄥ彂閫佽姹傦細<br />“<policy-file-request/>\0”錛?br />鏈嶅姟鍣ㄨ繑鍥炰竴涓獂ml鏂囨湰錛屽叾涓湁鍖呭惈<cross-domain-policy>閰嶇疆銆?br /><br />Adobe鎻愪緵浜哖erl鍜孭ython浠g爜銆俇nity3D鎻愪緵浜咰Sharp浠g爜銆?br />cs浠g爜鐢ㄤ簬Windows. Linux涓婂噯澶囦嬌鐢≒ython浠g爜銆?br />鍦ㄤ互涓婄綉欏典笅杞斤細flashpolicyd_v0.6.zip銆?br />鍏朵腑鏈?涓増鏈細init鏈嶅姟錛寈inetd鏈嶅姟錛岀嫭绔嬪簲鐢ㄣ傚彧闇涓縐嶅嵆鍙?br /><br />鎸夊簲鐢ㄧ殑鎬ц川錛岃姹傞噺鏋佸皬錛屾墍浠ユ渶閫傚悎搴旂敤xinetd.<br />鍙渶榪愯鍏朵腑鐨刬nstall.sh灝變細瀹夎銆?br />榪橀渶鎵嬪伐鍦?ect/services涓坊鍔犳湇鍔″悕flashpolicy鍜岀鍙?43.<br /><br />榪愯浠ヤ笅鎸囦護鍙互嫻嬭瘯涓涓嬶紝杈撳嚭搴旇鏄厤緗枃浠剁殑鍐呭銆?br />python -c 'print "<policy-file-request/>%c" % 0' | nc 127.0.0.1 843<br /><br />鍏跺疄浠ヤ笂嫻嬭瘯鎸囦護鍦ㄥ熬閮ㄥ浜嗕釜'\n', 涓嶆槸鏍囧噯鐨勬祴璇曘?br />鍦╥n.flashpolicyd.py涓浜嗕釜strip()鍘婚櫎榪欎釜'\n'.<br /><br />瀹為檯鐢║3D嫻嬭瘯鏃訛紝鍥犱負娌℃湁'\n'緇撳熬錛屾墍浠n.flashpolicyd.py鏃犳硶姝e父宸ヤ綔銆?br />闇瑕佸皢35琛宺eadline()濡備笅鏇存敼錛?br />        request = sys.stdin.readline().strip()<br />鏀逛負<br />        request = sys.stdin.readline(len('<policy-file-request/>\0')).strip()<br />榪欐牱灝變笉闇瑕乪ol灝卞彲浠ヨ鍙栦簡銆?br /><br />鏌ョ湅鍏朵粬涓や釜鐗堟湰鐨勪唬鐮佹病鏈夎繖涓敊璇紝浣嗘槸鏈夊彟涓涓敊璇紝<br />鍗蟲湁鍙兘鍙涓鍗婄殑璇鋒眰閫犳垚鍒ゆ柇鍑洪敊銆?br /><br />榪樻湁涓涓棶棰樻槸鍥犱負鏈嶅姟鏄敱nobody榪愯鐨勶紝鐜鍙橀噺涓嶅悓錛?br />灝唅n.flashpolicyd.py澶撮儴鐨?br />#!/usr/bin/env python<br />鏄庣‘涓?br />#!/usr/local/sbin/python<br />鍙伩鍏嶈皟鐢ㄤ綆鐗堟湰鐨刾ython鑰屾姤閿欍?br /></div><img src ="http://m.shnenglu.com/jinq0123/aggbug/164375.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/jinq0123/" target="_blank">閲戝簡</a> 2012-01-19 16:21 <a href="http://m.shnenglu.com/jinq0123/archive/2012/01/19/164375.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>python璁$畻24鐐?/title><link>http://m.shnenglu.com/jinq0123/archive/2010/12/22/137212.html</link><dc:creator>閲戝簡</dc:creator><author>閲戝簡</author><pubDate>Wed, 22 Dec 2010 10:56:00 GMT</pubDate><guid>http://m.shnenglu.com/jinq0123/archive/2010/12/22/137212.html</guid><wfw:comment>http://m.shnenglu.com/jinq0123/comments/137212.html</wfw:comment><comments>http://m.shnenglu.com/jinq0123/archive/2010/12/22/137212.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/jinq0123/comments/commentRss/137212.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/jinq0123/services/trackbacks/137212.html</trackback:ping><description><![CDATA[     鎽樿: 杈撳叆4涓暟瀛? 杈撳嚭鎵鏈夌敤鍔犲噺涔橀櫎緇撴灉涓?4鐨勮〃杈懼紡. 浠g爜濡備笅:  <a href='http://m.shnenglu.com/jinq0123/archive/2010/12/22/137212.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/jinq0123/aggbug/137212.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/jinq0123/" target="_blank">閲戝簡</a> 2010-12-22 18:56 <a href="http://m.shnenglu.com/jinq0123/archive/2010/12/22/137212.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>(Python緙栫▼)Pickle瀵硅薄http://m.shnenglu.com/jinq0123/archive/2009/07/03/89167.html閲戝簡閲戝簡Fri, 03 Jul 2009 08:37:00 GMThttp://m.shnenglu.com/jinq0123/archive/2009/07/03/89167.htmlhttp://m.shnenglu.com/jinq0123/comments/89167.htmlhttp://m.shnenglu.com/jinq0123/archive/2009/07/03/89167.html#Feedback1http://m.shnenglu.com/jinq0123/comments/commentRss/89167.htmlhttp://m.shnenglu.com/jinq0123/services/trackbacks/89167.htmlProgramming Python, 3rd Edition 緲昏瘧
鏈鏂扮増鏈錛?a >http://wiki.woodpecker.org.cn/moin/PP3eD


19.4. Pickled Objects

19.4. Pickle瀵硅薄

Probably the biggest limitation of DBM keyed files is in what they can store: data stored under a key must be a simple text string. If you want to store Python objects in a DBM file, you can sometimes manually convert them to and from strings on writes and reads (e.g., with str and eval calls), but this takes you only so far. For arbitrarily complex Python objects such as class instances and nested data structures, you need something more. Class instance objects, for example, cannot be later re-created from their standard string representations. Custom to-string conversions are error prone and not general.

DBM 閿帶鏂囦歡錛圖BM keyed file錛夋渶澶х殑闄愬埗涔熻鍦ㄤ簬浠栦滑鍙互瀛樺偍鐨勪笢瑗匡細涓涓敭鍊間笅瀛樺偍鐨勬暟鎹繀欏繪槸涓畝鍗曟枃鏈瓧絎︿覆銆傚鏋滄偍鎯寵鍦―BM鏂囦歡涓偍瀛楶ython瀵硅薄錛屾湁鏃舵偍 鍙互鍦ㄨ鍐欑殑鏃跺欙紝鎵嬪姩榪涜涓庡瓧絎︿覆鐨勮漿鎹紙渚嬪錛岀敤str鍜宔val璋冪敤錛夛紝浣嗗彧鑳藉仛鍒拌繖鏍楓傚浠繪剰澶嶆潅鐨凱ython瀵硅薄錛屽綾誨疄渚嬪拰宓屽鐨勬暟鎹粨 鏋勶紝鎮ㄩ渶瑕佹洿澶氱殑涓滆タ銆備緥濡傦紝綾誨疄渚嬪璞′互鍚庢棤娉曚粠鍏舵爣鍑嗗瓧絎︿覆琛ㄨ揪錛坰tring representation錛夐噸寤恒傝嚜瀹氫箟鐨勫埌瀛楃涓茬殑杞崲瀹規槗鍑洪敊錛屽茍涓斾笉閫氱敤銆?

The Python pickle module, a standard part of the Python system, provides the conversion step needed. It converts nearly arbitrary Python in-memory objects to and from a single linear string format, suitable for storing in flat files, shipping across network sockets between trusted sources, and so on. This conversion from object to string is often called serializationarbitrary data structures in memory are mapped to a serial string form.

Python 緋葷粺鐨勬爣鍑嗛儴浠訛紝pickle妯″潡錛屾彁渚涗簡鎵闇鐨勮漿鎹㈡楠ゃ傚畠鍙互灝嗗嚑涔庝換鎰忕殑Python鍐呭瓨瀵硅薄錛岃漿鎹負鍗曚竴綰挎х殑瀛楃涓叉牸寮忥紝浣夸箣閫備簬鏃犳牸寮忔枃浠跺瓨 鍌紝鎴栧湪鍙潬鏉ユ簮涔嬮棿璺ㄨ秺緗戠粶濂楁帴鍙d紶杈撶瓑絳夛紝騫跺彲鍙嶅悜杞崲銆傝繖縐嶄粠瀵硅薄鍒板瓧絎︿覆鐨勮漿鎹㈤氬父琚О涓哄簭鍒楀寲錛坰erialization錛夛細灝嗗唴瀛樹腑鐨勪換鎰? 鏁版嵁緇撴瀯鏄犲皠涓轟覆琛屽瓧絎︿覆褰㈠紡銆?

The string representation used for objects is also sometimes referred to as a byte stream, due to its linear format. It retains all the content and references structure of the original in-memory object. When the object is later re-created from its byte string, it will be a new in-memory object identical in structure and value to the original, though located at a different memory address. The re-created object is effectively a copy of the original.

瀵硅薄鐨勫瓧絎︿覆琛ㄨ揪鐢變簬鍏剁嚎鎬х殑鏍煎紡錛屾湁鏃朵篃琚О涓哄瓧鑺傛祦銆傚畠鍖呭惈浜嗗師濮嬪唴瀛樹腑瀵硅薄鐨勬墍鏈夊唴瀹瑰拰寮曠敤緇撴瀯銆傚綋瀵硅薄鍚庢潵浠庡叾瀛楄妭涓查噸寤烘椂錛屽唴瀛樹腑鏂板緩鐨勫璞′笌鍘熷璞″叿鏈夌浉鍚岀殑緇撴瀯鍜屽鹼紝浣嗕綅浜庝笉鍚岀殑鍐呭瓨鍦板潃銆傝閲嶅緩瀵硅薄瀹為檯涓婃槸鍘熷璞$殑澶嶅埗銆?

Pickling works on almost any Python datatypenumbers, lists, dictionaries, class instances, nested structures, and moreand so is a general way to store data. Because pickles contain native Python objects, there is almost no database API to be found; the objects stored are processed with normal Python syntax when they are later retrieved.

Pickle鍙敤浜庡嚑涔庢墍鏈夌殑Python鏁版嵁綾誨瀷錛氭暟瀛椼佸垪琛ㄣ佸瓧鍏搞佺被瀹炰緥銆佸祵濂楃粨鏋勶紝絳夌瓑錛屽洜姝ゅ畠鏄瓨鍌ㄦ暟鎹殑閫氱敤鏂規硶銆傚洜涓簆ickle鍖呭惈鐨勬槸Python鏈湴瀵硅薄錛屾墍浠ュ嚑涔庢病鏈夋暟鎹簱鐨凙PI錛涘璞″瓨鍌ㄤ笌澶勭悊鍙婂悗鏉ョ殑鎻愬彇鐢ㄧ殑閮芥槸閫氬父鐨凱ython璇硶銆?

19.4.1. Using Object Pickling

19.4.1. 浣跨敤瀵硅薄pickle

Pickling may sound complicated the first time you encounter it, but the good news is that Python hides all the complexity of object-to-string conversion. In fact, the pickle module 's interfaces are incredibly simple to use. For example, to pickle an object into a serialized string, we can either make a pickler and call its methods or use convenience functions in the module to achieve the same effect:

絎? 涓嬈″惉鍒皃ickle錛屽彲鑳借寰楁湁鐐瑰鏉傦紝浣嗗ソ娑堟伅鏄紝Python闅愯棌浜嗘墍鏈変粠瀵硅薄鍒板瓧絎︿覆杞崲鐨勫鏉傛с備簨瀹炰笂錛宲ickle妯″潡鐨勬帴鍙g畝鍗曟槗鐢紝綆 鐩翠護浜洪毦浠ョ疆淇°備緥濡傦紝瑕乸ickle瀵硅薄鍒頒竴涓簭鍒楀寲瀛楃涓詫紝鎴戜滑鍙互鐢熸垚涓涓猵ickler錛屽茍璋冪敤鍏舵柟娉曪紝鎴栦嬌鐢ㄦā鍧椾腑鐨勪究鎹峰嚱鏁版潵杈懼埌鐩稿悓鐨勬晥 鏋滐細

 

P = pickle.Pickler( file) 

Make a new pickler for pickling to an open output file object file.
鐢熸垚涓涓柊鐨刾ickler錛岀敤鏉ickle鍒頒竴涓墦寮鐨勮緭鍑烘枃浠跺璞ile銆?

 

P.dump( object) 

Write an object onto the pickler's file/stream.
鍐欎竴涓璞″埌pickler鐨勬枃浠?嫻併?

 

pickle.dump( object, file) 

Same as the last two calls combined: pickle an object onto an open file.
絳夊悓浜庝笂涓や釜璋冪敤鐨勭粍鍚堬細pickle瀵硅薄鍒頒竴涓墦寮鐨勬枃浠躲?

 

string = pickle.dumps( object) 

Return the pickled representation of object as a character string.
榪斿洖涓涓瓧絎︿覆浣滀負宸瞤ickle瀵硅薄鐨勮〃杈俱?

Unpickling from a serialized string back to the original object is similarboth object and convenience function interfaces are available:

浠庝竴涓簭鍒楀寲瀛楃涓瞮npickle鍥炲師濮嬪璞℃槸綾諱技鐨勶紝鍙互鐢ㄥ璞′篃鍙互鐢ㄤ究鎹峰嚱鏁版帴鍙o細

 

U = pickle.Unpickler( file) 

Make an unpickler for unpickling from an open input file object file.
鐢熸垚涓涓猽npickler錛岀敤鏉ヤ粠涓涓墦寮鐨勬枃浠跺璞ile unpickle銆?

 

object = U.load( )

Read an object from the unpickler's file/stream.
浠巙npickler鐨勬枃浠?嫻佽鍙栦竴涓璞°?

 

object = pickle.load( file) 

Same as the last two calls combined: unpickle an object from an open file.
絳夊悓浜庝笂涓や釜璋冪敤鐨勭粍鍚堬細浠庝竴涓墦寮鐨勬枃浠秛npickle涓涓璞°?

 

object = pickle.loads( string) 

Read an object from a character string rather than a file.
浠庡瓧絎︿覆璇誨彇涓涓璞★紝鑰屼笉鏄粠鏂囦歡銆?

Pickler and Unpickler are exported classes. In all of the preceding cases, file is either an open file object or any object that implements the same attributes as file objects:

Pickler鍜孶npickler鏄鍑虹被銆傚湪涓婅堪鎵鏈夋儏鍐典笅錛宖ile鏄釜宸叉墦寮鐨勬枃浠跺璞★紝鎴栬呮槸瀹炵幇浜嗕互涓嬫枃浠跺璞″睘鎬х殑浠諱綍瀵硅薄錛?

Pickler calls the file's write method with a string argument.

Pickler浼氳皟鐢ㄦ枃浠剁殑write鏂規硶錛屽弬鏁版槸涓瓧絎︿覆銆?

Unpickler calls the file's read method with a byte count, and readline without arguments.

Unpickler浼氳皟鐢ㄦ枃浠剁殑read鏂規硶錛屽弬鏁版槸瀛楄妭鏁幫紝浠ュ強readline錛屾棤鍙傛暟銆?

Any object that provides these attributes can be passed in to the file parameters. In particular, file can be an instance of a Python class that provides the read/write methods (i.e., the expected file-like interface). This lets you map pickled streams to in-memory objects with classes, for arbitrary use. For instance, the StringIO standard library module discussed in Chapter 3 provides classes that map file calls to and from in-memory strings.

浠? 浣曟彁渚涜繖浜涘睘鎬х殑瀵硅薄閮藉彲浠ヤ綔涓篺ile鍙傛暟浼犲叆銆傜壒鍒槸錛宖ile鍙互鏄竴涓彁渚涗簡璇?鍐欐柟娉曠殑Python綾誨疄渚嬶紙鍗抽鏈熺殑綾諱技鏂囦歡鐨勬帴鍙o級銆傝繖璁╂偍 鍙互鐢ㄧ被鏄犲皠pickle嫻佸埌鍐呭瓨瀵硅薄錛屽茍鍙換鎰忎嬌鐢ㄣ備緥濡傦紝絎?绔犺璁虹殑鏍囧噯搴撴ā鍧桽tringIO鎻愪緵鐨勭被錛屽畠浠彲鏄犲皠鏂囦歡璋冪敤鍒板唴瀛樺瓧絎︿覆鎴栧弽涔嬨?

This hook also lets you ship Python objects across a network, by providing sockets wrapped to look like files in pickle calls at the sender, and unpickle calls at the receiver (see the sidebar "Making Sockets Look Like Files," in Chapter 13, for more details). In fact, for some, pickling Python objects across a trusted network serves as a simpler alternative to network transport protocols such as SOAP and XML-RPC; provided that Python is on both ends of the communication (pickled objects are represented with a Python-specific format, not with XML text).

璇? 鎸傞挬涔熷彲浠ヨ鎮ㄩ氳繃緗戠粶浼犺緭Python瀵硅薄錛屽彧瑕佸皝瑁呭鎺ュ彛錛屼嬌涔嬬湅涓婂幓鍍忓彂閫佺pickle璋冪敤涓殑鏂囦歡錛屼互鍙婂儚鎺ユ敹绔痷npickle璋冪敤涓殑鏂囦歡 錛堣瑙佺13绔犱晶鏍?#8220;浣垮鎺ュ彛鐪嬩笂鍘誨儚鏂囦歡”錛夈備簨瀹炰笂錛屽涓浜涗漢鏉ヨ錛宲ickle Python瀵硅薄騫跺湪涓涓煎緱淇¤禆鐨勭綉緇滀笂浼犺緭錛屾槸鏇夸唬濡係OAP鍜孹ML-RPC涔嬬被緗戠粶浼犺緭鍗忚鐨勪竴涓畝鍗曟柟娉曪紱鍙閫氫俊鐨勪袱绔兘鏈塒ython錛堣 pickle鐨勫璞℃槸鐢≒ython涓撴湁鐨勬牸寮忚〃杈劇殑錛岃屼笉鏄敤XML鏂囨湰錛夈?

19.4.2. Picking in Action

19.4.2. Pickle瀹炴垬

In more typical use, to pickle an object to a flat file, we just open the file in write mode and call the dump function:

鍏稿瀷鐨勪嬌鐢ㄦ儏鍐墊槸錛宲ickle瀵硅薄鍒版棤鏍煎紡鏂囦歡錛屾垜浠彧闇浠ュ啓妯″紡鎵撳紑鏂囦歡錛屽茍璋冪敤dump鍑芥暟錛?

 

% python
>>> table = {'a': [1, 2, 3],
'b': ['spam', 'eggs'],
'c': {'name':'bob'}}
>>>
>>> import pickle
>>> mydb = open('dbase', 'w')
>>> pickle.dump(table, mydb)



Notice the nesting in the object pickled herethe pickler handles arbitrary structures. To unpickle later in another session or program run, simply reopen the file and call load:

娉ㄦ剰榪欎釜琚玴ickle瀵硅薄涓殑宓屽錛歱ickler鍙互澶勭悊浠繪剰緇撴瀯銆傜劧鍚庯紝鍦ㄥ彟涓涓細璇濇垨紼嬪簭涓璾npickle錛屽彧瑕侀噸鏂版墦寮璇ユ枃浠訛紝騫惰皟鐢╨oad錛?

 

% python
>>> import pickle
>>> mydb = open('dbase', 'r')
>>> table = pickle.load(mydb)
>>> table
{'b': ['spam', 'eggs'], 'a': [1, 2, 3], 'c': {'name': 'bob'}}



The object you get back from unpickling has the same value and reference structure as the original, but it is located at a different address in memory. This is true whether the object is unpickled in the same or a future process. In Python-speak, the unpickled object is == but is not is:

unpickle鎵寰楃殑瀵硅薄鍏鋒湁涓庡師瀵硅薄鐩稿悓鐨勫煎拰寮曠敤緇撴瀯錛屼絾瀹冧綅浜庝笉鍚岀殑鍐呭瓨鍦板潃銆傛棤璁哄湪鍚屼竴榪涚▼鎴栧彟涓榪涚▼unpickle錛岄兘鏄繖鏍楓傜敤Python鐨勮瘽鏉ヨ錛寀npickle鍚庣殑瀵硅薄鏄?#8220;==”鍏崇郴錛屼絾涓嶆槸“is”鍏崇郴錛?

 

% python
>>> import pickle
>>> f = open('temp', 'w')
>>> x = ['Hello', ('pickle', 'world')] # list with nested tuple
>>> pickle.dump(x, f)
>>> f.close( ) # close to flush changes
>>>
>>> f = open('temp', 'r')
>>> y = pickle.load(f)
>>> y
['Hello', ('pickle', 'world')]
>>>
>>> x == y, x is y
(True, False)



To make this process simpler still, the module in Example 19-1 wraps pickling and unpickling calls in functions that also open the files where the serialized form of the object is stored.

涓轟簡璁╄繖涓榪囩▼鏇寸畝鍗曪紝渚?9-1涓殑妯″潡鎶妏ickle鍜寀npickle璋冪敤灝佽鍦ㄥ嚱鏁頒腑錛屽湪鍑芥暟涓悓鏃惰繕鎵撳紑鏂囦歡錛屽茍灝嗗璞$殑搴忓垪鍖栧瓨鍌ㄥ湪璇ユ枃浠朵腑銆?

Example 19-1. PP3E\Dbase\filepickle.py

   1 import pickle
2
3 def saveDbase(filename, object):
4 file = open(filename, 'w')
5 pickle.dump(object, file) # pickle to file
6 file.close( ) # any file-like object will do
7
8 def loadDbase(filename):
9 file = open(filename, 'r')
10 object = pickle.load(file) # unpickle from file
11 file.close( ) # re-creates object in memory
12 return object



To store and fetch now, simply call these module functions; here they are in action managing a fairly complex structure with multiple references to the same nested objectthe nested list called L at first is stored only once in the file:

鐜板湪錛屽瓨鍌ㄥ拰鎻愬彇鏃跺彧闇璋冪敤榪欎簺妯″潡鍑芥暟錛涗互涓嬪疄渚嬫槸涓浉褰撳鏉傜殑緇撴瀯錛屽叿鏈夊鍚屼竴宓屽瀵硅薄鐨勫閲嶅紩鐢紝璇ュ祵濂楀垪琛紝鍗崇1涓狶錛屽湪鏂囦歡涓彧浼氫繚瀛樹竴嬈★細

 

C:\...\PP3E\Dbase>python
>>> from filepickle import *
>>> L = [0]
>>> D = {'x':0, 'y':L}
>>> table = {'A':L, 'B':D} # L appears twice
>>> saveDbase('myfile', table) # serialize to file

C:\...\PP3E\Dbase>python
>>> from filepickle import *
>>> table = loadDbase('myfile') # reload/unpickle
>>> table
{'B': {'x': 0, 'y': [0]}, 'A': [0]}
>>> table['A'][0] = 1 # change shared object
>>> saveDbase('myfile', table) # rewrite to the file

C:\...\PP3E\Dbase>python
>>> from filepickle import *
>>> print loadDbase('myfile') # both L's updated as expected
{'B': {'x': 0, 'y': [1]}, 'A': [1]}



Besides built-in types like the lists, tuples, and dictionaries of the examples so far, class instances may also be pickled to file-like objects. This provides a natural way to associate behavior with stored data (class methods process instance attributes) and provides a simple migration path (class changes made in module files are automatically picked up by stored instances). Here's a brief interactive demonstration:

闄? 浜嗗唴緗殑綾誨瀷錛屽浠ヤ笂渚嬪瓙涓殑鍒楄〃錛屽厓緇勫拰瀛楀吀錛岀被瀹炰緥涔熷彲琚玴ickle鍒扮被浼兼枃浠剁殑瀵硅薄涓傝繖鎻愪緵浜嗕竴涓嚜鐒剁殑鏂瑰紡鏉ュ叧鑱旇涓轟笌瀛樺偍鐨勬暟鎹紙綾繪柟娉曞 鐞嗗疄渚嬬殑灞炴э級錛屽茍鎻愪緵浜嗕竴鏉$畝鍗曠殑榪佺Щ璺緞錛堣瀛樺偍鐨勫疄渚嬪皢鑷姩鑾峰緱妯″潡鏂囦歡涓綾葷殑鏇存敼錛夈備互涓嬫槸涓畝鐭殑浜や簰婕旂ず錛?

 

>>> class Rec:
def _ _init_ _(self, hours):
self.hours = hours
def pay(self, rate=50):
return self.hours * rate

>>> bob = Rec(40)
>>> import pickle
>>> pickle.dump(bob, open('bobrec', 'w'))
>>>
>>> rec = pickle.load(open('bobrec'))
>>> rec.hours
40
>>> rec.pay( )
2000



We'll explore how this works in more detail in conjunction with shelves later in this chapteras we'll see, although the pickle module can be used directly, it is also the underlying translation engine in both shelves and ZODB databases.

鎴戜滑灝嗕笌鏈珷涓嬮潰鐨剆helve涓璧瘋緇嗘帰璁ㄨ繖鏄姝ゅ伐浣滅殑銆傛垜浠皢浼氱湅鍒幫紝铏界劧pickle妯″潡鍙洿鎺ヤ嬌鐢紝浣嗗畠涔熸槸shelve鍜孼ODB鏁版嵁搴撶殑搴曞眰緲昏瘧寮曟搸銆?

In fact, Python can pickle just about anything, except for:

浜嬪疄涓婏紝Python鍙互pickle浠諱綍涓滆タ錛岄櫎浜嗭細

Compiled code objects; functions and classes record just their names in pickles, to allow for later reimport and automatic acquisition of changes made in module files.

緙栬瘧鐨勪唬鐮佸璞★紱鍑芥暟鍜岀被鍦╬ickle涓彧鏄褰曚簡瀹冧滑鐨勫悕瀛楋紝浠ヤ究鍚庢潵閲嶆柊瀵煎叆鍜岃嚜鍔ㄨ幏鍙栨ā鍧楁枃浠朵腑鐨勬洿鏀廣?

Instances of classes that do not follow class importability rules (more on this at the end of the section "Shelve Files," later in this chapter).

涓嶉伒瀹堢被鍙鍏ヨ鍒欙紙class importability rule錛夌殑綾誨疄渚嬶紙鏈珷鍚庨潰“Shelve鏂囦歡”涓鑺傜殑灝鵑儴鏈夋洿澶氱浉鍏沖唴瀹癸級銆?

Instances of some built-in and user-defined types that are coded in C or depend upon transient operating system states (e.g., open file objects cannot be pickled).

鐢–緙栫爜鐨勬垨渚濊禆浜庢搷浣滅郴緇熺灛鎬佺殑涓浜涘唴緗殑鍜岀敤鎴峰畾涔夌被鍨嬬殑瀹炰緥錛堜緥濡傦紝鎵撳紑鐨勬枃浠跺璞℃棤娉昿ickle錛夈?

A PicklingError is raised if an object cannot be pickled.

濡傛灉瀵硅薄涓嶈兘pickle錛屼細寮曞彂PickleError銆?

19.4.3. Pickler Protocols and cPickle

19.4.3. Pickler鍗忚鍜宑Pickle

In recent Python releases, the pickler introduced the notion of protocolsstorage formats for pickled data. Specify the desired protocol by passing an extra parameter to the pickling calls (but not to unpickling calls: the protocol is automatically determined from the pickled data):

鍦ㄦ渶榪戠殑Python鐗堟湰涓紝pickler鎺ㄥ嚭浜嗗崗璁殑姒傚康錛歱ickle鏁版嵁鐨勪繚瀛樻牸寮忋傞氳繃pickle璋冪敤鏃朵紶鍏ヤ竴涓澶栫殑鍙傛暟錛屽彲鎸囧畾鎵闇鐨勫崗璁紙浣唘npickle璋冪敤涓嶉渶瑕侊細鍗忚鏄嚜鍔ㄤ粠宸瞤ickle鐨勬暟鎹‘瀹氱殑錛夛細

 

pickle.dump(object, file, protocol)



Pickled data may be created in either text or binary protocols. By default, the storage protocol is text (also known as protocol 0). In text mode, the files used to store pickled objects may be opened in text mode as in the earlier examples, and the pickled data is printable ASCII text, which can be read (it's essentially instructions for a stack machine).

Pickle 鏁版嵁鍙互鎸夋枃鏈崗璁垨浜岃繘鍒跺崗璁駭鐢熴傞粯璁ゆ儏鍐典笅錛屽瓨鍌ㄥ崗璁槸鏂囨湰鍗忚錛堜篃縐頒負0鍙峰崗璁級銆傚湪鏂囨湰妯″紡涓嬶紝鐢ㄦ潵瀛樺偍pickle瀵硅薄鐨勬枃浠跺彲浠ョ敤鏂囨湰妯″紡 鎵撳紑錛屽涓婅堪鐨勪緥瀛愶紝騫朵笖pickle鐨勬暟鎹槸鍙墦鍗扮殑ASCII鏂囨湰錛屽茍涓旀槸鍙鐨勶紙榪欏熀鏈笂鏄鍫嗘爤鏈哄疄鐜扮殑鎸囩ず錛夈?

The alternative protocols (protocols 1 and 2) store the pickled data in binary format and require that files be opened in binary mode (e.g., rb, wb). Protocol 1 is the original binary format; protocol 2, added in Python 2.3, has improved support for pickling of new-style classes. Binary format is slightly more efficient, but it cannot be inspected. An older option to pickling calls, the bin argument, has been subsumed by using a pickling protocol higher than 0. The pickle module also provides a HIGHEST_PROTOCOL variable that can be passed in to automatically select the maximum value.

鍏? 浠栧崗璁紙1鍙峰拰2鍙峰崗璁? 錛変互浜岃繘鍒舵牸寮忓瓨鍌╬ickle鏁版嵁錛屽茍瑕佹眰鏂囦歡浠ヤ簩榪涘埗妯″紡鎵撳紑錛堜緥濡傦細rb銆亀b錛夈?鍙峰崗璁槸鍘熷浜岃繘鍒舵牸寮忥紱2鍙峰崗璁槸Python 2.3澧炲姞鐨勶紝瀹冩敼鍠勪簡瀵規柊鍨嬬被pickle鐨勬敮鎸併備簩榪涘埗鏍煎紡鏁堢巼鏇撮珮涓鐐癸紝浣嗗畠鏃犳硶榪涜鏌ョ湅銆傛棫鐨刾ickle璋冪敤鏈変竴涓夐」錛屽嵆bin鍙傛暟錛岀幇宸茶 褰掑叆浣跨敤澶т簬0鐨勫崗璁俻ickle妯″潡榪樻彁渚涗簡涓涓狧IGHEST_PROTOCOL鍙橀噺錛屼紶鍏ュ畠鍙互鑷姩閫夋嫨鏈澶х殑鍗忚鍊箋?

One note: if you use the default text protocol, make sure you open pickle files in text mode later. On some platforms, opening text data in binary mode may cause unpickling errors due to line-end formats on Windows:

娉ㄦ剰錛氬鏋滄偍浣跨敤榛樿鐨勬枃鏈崗璁紝浠ュ悗璇峰姟蹇呬互鏂囨湰妯″紡鎵撳紑pickle鏂囦歡銆傚湪涓浜涘鉤鍙頒笂錛屽洜涓篧indows鐨勮灝炬牸寮忎笉鍚岋紝浠ヤ簩榪涘埗妯″紡鎵撳紑鏂囨湰鏁版嵁鍙兘浼氬鑷磚npickle閿欒:

 

>>> f = open('temp', 'w')                  # text mode file on Windows
>>> pickle.dump(('ex', 'parrot'), f) # use default text protocol
>>> f.close( )
>>>
>>> pickle.load(open('temp', 'r')) # OK in text mode
('ex', 'parrot')
>>> pickle.load(open('temp', 'rb')) # fails in binary
Traceback (most recent call last):
File "<pyshell#337>", line 1, in -toplevel-
pickle.load(open('temp', 'rb'))
...lines deleted...
ValueError: insecure string pickle



One way to sidestep this potential issue is to always use binary mode for your files, even for the text pickle protocol. Since you must open files in binary mode for the binary pickler protocols anyhow (higher than the default 0), this isn't a bad habit to get into:

鍥為伩榪欎釜娼滃湪闂鐨勬柟娉曚箣涓鏄紝鎬繪槸浣跨敤浜岃繘鍒舵ā寮忕殑鏂囦歡錛屽嵆浣挎槸鐢ㄦ枃鏈琾ickle鍗忚銆傝嚦灝戝浜庝簩榪涘埗pickler鍗忚錛堥珮浜庨粯璁?錛夛紝鎮ㄥ繀欏諱互浜岃繘鍒舵ā寮忔墦寮鏂囦歡錛屾墍浠ヨ繖涓嶆槸涓涓潖涔犳儻錛?

 

>>> f = open('temp', 'wb')                 # create in binary mode
>>> pickle.dump(('ex', 'parrot'), f) # use text protocol
>>> f.close( )
>>>
>>> pickle.load(open('temp', 'rb'))
('ex', 'parrot')
>>> pickle.load(open('temp', 'r'))
('ex', 'parrot')



Refer to Python's library manual for more information on the pickler. Also check out marshal, a module that serializes an object too, but can handle only simple object types. pickle is more general than marshal and is normally preferred.

璇峰弬鑰働ython搴撴墜鍐岋紝浠ヤ簡瑙f洿澶歱ickler鐨勪俊鎭傚彟澶栵紝璇鋒煡闃卪arshal錛屽畠涔熸槸涓涓簭鍒楀寲瀵硅薄鐨勬ā鍧楋紝浣嗗彧鑳藉鐞嗙畝鍗曞璞$被鍨嬨俻ickle姣攎arshal鏇撮氱敤錛屽茍閫氬父鏄閫夈?

And while you are flipping (or clicking) through that manual, be sure to also see the entries for the cPickle modulea reimplementation of pickle coded in C for faster performance. You can explicitly import cPickle for a substantial speed boost; its chief limitation is that you cannot subclass its versions of Pickle and Unpickle because they are functions, not classes (this is not required by most programs). The pickle and cPickle modules use compatible data formats, so they may be used interchangeably.

鑰? 褰撲綘緲葷湅錛堟垨鐐瑰嚮錛塒ython鎵嬪唽鏃訛紝璇蜂竴瀹氫篃瑕佺湅鐪媍Pickle妯″潡鐨勬潯鐩紝瀹冩槸pickle鐨凜璇█瀹炵幇錛屾ц兘涓婃洿蹇傛偍鍙互鏄懼紡瀵煎叆 cPickle鏇夸唬pickle錛屼互澶у箙鎻愬崌閫熷害錛涘叾涓昏鐨勯檺鍒舵槸錛屼綘涓嶈兘緇ф壙璇ョ増鏈殑Pickle鍜孶npickle錛屽洜涓哄畠浠槸鍑芥暟錛岃屼笉鏄被錛堝鏁? 紼嬪簭騫朵笉瑕佹眰瀹冧滑鏄被錛夈俻ickle鍜宑Pickle妯″潡浣跨敤鍏煎鐨勬暟鎹牸寮忥紝鎵浠ュ畠浠彲浠ヤ簰鎹嬌鐢ㄣ?

If it is available in your Python, the shelve module automatically chooses the cPickle module for faster serialization, instead of pickle. I haven't explained shelve yet, but I will now.

濡傛灉鎮ㄧ殑Python涓湁shelve妯″潡錛屽畠浼氳嚜鍔ㄩ夌敤cPickle妯″潡錛岃屼笉鏄痯ickle錛屼互杈懼埌鏇村揩鐨勫簭鍒楀寲銆傛垜榪樻病鏈夎В閲婅繃shelve錛屼絾鎴戦┈涓婂氨浼氳鍒板畠銆?



閲戝簡 2009-07-03 16:37 鍙戣〃璇勮
]]>
Boost.Python涓枃鏂囨。涓嬭澆http://m.shnenglu.com/jinq0123/archive/2008/06/16/BoostPythonDocTranslate.html閲戝簡閲戝簡Mon, 16 Jun 2008 03:30:00 GMThttp://m.shnenglu.com/jinq0123/archive/2008/06/16/BoostPythonDocTranslate.htmlhttp://m.shnenglu.com/jinq0123/comments/53516.htmlhttp://m.shnenglu.com/jinq0123/archive/2008/06/16/BoostPythonDocTranslate.html#Feedback0http://m.shnenglu.com/jinq0123/comments/commentRss/53516.htmlhttp://m.shnenglu.com/jinq0123/services/trackbacks/53516.htmlBoost鏂囨。涓璓ython搴撴枃妗g殑緲昏瘧銆?nbsp; 闃呰鍏ㄦ枃

閲戝簡 2008-06-16 11:30 鍙戣〃璇勮
]]>
鐢˙oost.Python鏋勫緩娣峰悎緋葷粺http://m.shnenglu.com/jinq0123/archive/2008/05/29/BuildingHybridSystemswithBoostPython_c.html閲戝簡閲戝簡Thu, 29 May 2008 05:11:00 GMThttp://m.shnenglu.com/jinq0123/archive/2008/05/29/BuildingHybridSystemswithBoostPython_c.htmlhttp://m.shnenglu.com/jinq0123/comments/51465.htmlhttp://m.shnenglu.com/jinq0123/archive/2008/05/29/BuildingHybridSystemswithBoostPython_c.html#Feedback15http://m.shnenglu.com/jinq0123/comments/commentRss/51465.htmlhttp://m.shnenglu.com/jinq0123/services/trackbacks/51465.html闃呰鍏ㄦ枃

閲戝簡 2008-05-29 13:11 鍙戣〃璇勮
]]>
Python灝佽鐨勬ц兘鐮旂┒http://m.shnenglu.com/jinq0123/archive/2008/05/23/PythonWrapperTools.html閲戝簡閲戝簡Fri, 23 May 2008 03:39:00 GMThttp://m.shnenglu.com/jinq0123/archive/2008/05/23/PythonWrapperTools.htmlhttp://m.shnenglu.com/jinq0123/comments/50851.htmlhttp://m.shnenglu.com/jinq0123/archive/2008/05/23/PythonWrapperTools.html#Feedback0http://m.shnenglu.com/jinq0123/comments/commentRss/50851.htmlhttp://m.shnenglu.com/jinq0123/services/trackbacks/50851.html闃呰鍏ㄦ枃

閲戝簡 2008-05-23 11:39 鍙戣〃璇勮
]]>
鏄劇ずwxStaticBitmap鐨勭獥鍙?/title><link>http://m.shnenglu.com/jinq0123/archive/2008/04/07/FrameWithWxStaticBitmap.html</link><dc:creator>閲戝簡</dc:creator><author>閲戝簡</author><pubDate>Mon, 07 Apr 2008 03:37:00 GMT</pubDate><guid>http://m.shnenglu.com/jinq0123/archive/2008/04/07/FrameWithWxStaticBitmap.html</guid><wfw:comment>http://m.shnenglu.com/jinq0123/comments/46412.html</wfw:comment><comments>http://m.shnenglu.com/jinq0123/archive/2008/04/07/FrameWithWxStaticBitmap.html#Feedback</comments><slash:comments>2</slash:comments><wfw:commentRss>http://m.shnenglu.com/jinq0123/comments/commentRss/46412.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/jinq0123/services/trackbacks/46412.html</trackback:ping><description><![CDATA[     鎽樿: 濡傛灉涓嶅垱寤簑xPanel錛屽彧鍒涘緩wxStaticBitmap錛岀獥鍙eぇ灝忓彉鍖栨椂錛屽浘鐗囨樉紺轟細涓嶆甯革紝騫朵笖鎸囧畾鍥劇墖浣嶇疆鍜屽ぇ灝忔棤鏁堛倃xStaticBitmap鐨勭埗紿楀彛鏄痜mMain鎴杙nl閮藉彲浠ャ?  <a href='http://m.shnenglu.com/jinq0123/archive/2008/04/07/FrameWithWxStaticBitmap.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/jinq0123/aggbug/46412.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/jinq0123/" target="_blank">閲戝簡</a> 2008-04-07 11:37 <a href="http://m.shnenglu.com/jinq0123/archive/2008/04/07/FrameWithWxStaticBitmap.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>XRCed鐢熸垚鐨勪唬鐮佸垎鏋?/title><link>http://m.shnenglu.com/jinq0123/archive/2008/03/26/XrcedGeneratedPython.html</link><dc:creator>閲戝簡</dc:creator><author>閲戝簡</author><pubDate>Wed, 26 Mar 2008 05:23:00 GMT</pubDate><guid>http://m.shnenglu.com/jinq0123/archive/2008/03/26/XrcedGeneratedPython.html</guid><wfw:comment>http://m.shnenglu.com/jinq0123/comments/45424.html</wfw:comment><comments>http://m.shnenglu.com/jinq0123/archive/2008/03/26/XrcedGeneratedPython.html#Feedback</comments><slash:comments>9</slash:comments><wfw:commentRss>http://m.shnenglu.com/jinq0123/comments/commentRss/45424.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/jinq0123/services/trackbacks/45424.html</trackback:ping><description><![CDATA[     鎽樿: XRCed鏄痺xPython闄勫甫鐨刄I璁捐鍣紝鐢熸垚xrc璧勬簮鏂囦歡錛屼篃鍙互杈撳嚭python浠g爜銆傛湰鏂囧XRCed杈撳嚭鐨刾ython浠g爜榪涜鍒嗘瀽銆?nbsp; <a href='http://m.shnenglu.com/jinq0123/archive/2008/03/26/XrcedGeneratedPython.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/jinq0123/aggbug/45424.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/jinq0123/" target="_blank">閲戝簡</a> 2008-03-26 13:23 <a href="http://m.shnenglu.com/jinq0123/archive/2008/03/26/XrcedGeneratedPython.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>XRC鍒濇http://m.shnenglu.com/jinq0123/archive/2008/03/24/XrcPrimary.html閲戝簡閲戝簡Mon, 24 Mar 2008 05:52:00 GMThttp://m.shnenglu.com/jinq0123/archive/2008/03/24/XrcPrimary.htmlhttp://m.shnenglu.com/jinq0123/comments/45263.htmlhttp://m.shnenglu.com/jinq0123/archive/2008/03/24/XrcPrimary.html#Feedback1http://m.shnenglu.com/jinq0123/comments/commentRss/45263.htmlhttp://m.shnenglu.com/jinq0123/services/trackbacks/45263.html闃呰鍏ㄦ枃

閲戝簡 2008-03-24 13:52 鍙戣〃璇勮
]]>
鎵歸噺html杞瑃exthttp://m.shnenglu.com/jinq0123/archive/2008/03/13/PyHtm2txt.html閲戝簡閲戝簡Thu, 13 Mar 2008 03:55:00 GMThttp://m.shnenglu.com/jinq0123/archive/2008/03/13/PyHtm2txt.htmlhttp://m.shnenglu.com/jinq0123/comments/44354.htmlhttp://m.shnenglu.com/jinq0123/archive/2008/03/13/PyHtm2txt.html#Feedback1http://m.shnenglu.com/jinq0123/comments/commentRss/44354.htmlhttp://m.shnenglu.com/jinq0123/services/trackbacks/44354.html闃呰鍏ㄦ枃

閲戝簡 2008-03-13 11:55 鍙戣〃璇勮
]]>
Boost.Python鏋勫緩涓庢祴璇旽OWTOhttp://m.shnenglu.com/jinq0123/archive/2008/01/17/BoostPythonBuilding.html閲戝簡閲戝簡Thu, 17 Jan 2008 07:14:00 GMThttp://m.shnenglu.com/jinq0123/archive/2008/01/17/BoostPythonBuilding.htmlhttp://m.shnenglu.com/jinq0123/comments/41337.htmlhttp://m.shnenglu.com/jinq0123/archive/2008/01/17/BoostPythonBuilding.html#Feedback2http://m.shnenglu.com/jinq0123/comments/commentRss/41337.htmlhttp://m.shnenglu.com/jinq0123/services/trackbacks/41337.html闃呰鍏ㄦ枃

閲戝簡 2008-01-17 15:14 鍙戣〃璇勮
]]>
wxPython涓璛RC鏂囦歡i18n紺轟緥 http://m.shnenglu.com/jinq0123/archive/2007/12/17/XrcI18nExample.html閲戝簡閲戝簡Mon, 17 Dec 2007 04:22:00 GMThttp://m.shnenglu.com/jinq0123/archive/2007/12/17/XrcI18nExample.htmlhttp://m.shnenglu.com/jinq0123/comments/38713.htmlhttp://m.shnenglu.com/jinq0123/archive/2007/12/17/XrcI18nExample.html#Feedback0http://m.shnenglu.com/jinq0123/comments/commentRss/38713.htmlhttp://m.shnenglu.com/jinq0123/services/trackbacks/38713.html闃呰鍏ㄦ枃

閲戝簡 2007-12-17 12:22 鍙戣〃璇勮
]]>
鐢╨ist.sort(key)鎺掑簭http://m.shnenglu.com/jinq0123/archive/2007/11/21/ListSortByKeyFun.html閲戝簡閲戝簡Wed, 21 Nov 2007 02:36:00 GMThttp://m.shnenglu.com/jinq0123/archive/2007/11/21/ListSortByKeyFun.htmlhttp://m.shnenglu.com/jinq0123/comments/37066.htmlhttp://m.shnenglu.com/jinq0123/archive/2007/11/21/ListSortByKeyFun.html#Feedback0http://m.shnenglu.com/jinq0123/comments/commentRss/37066.htmlhttp://m.shnenglu.com/jinq0123/services/trackbacks/37066.html闃呰鍏ㄦ枃

閲戝簡 2007-11-21 10:36 鍙戣〃璇勮
]]>
(Python緙栫▼)鍩烘湰鐨勫唴宓屾妧鏈?/title><link>http://m.shnenglu.com/jinq0123/archive/2007/09/20/PP3edBasicEmbeddingTechniques.html</link><dc:creator>閲戝簡</dc:creator><author>閲戝簡</author><pubDate>Thu, 20 Sep 2007 01:44:00 GMT</pubDate><guid>http://m.shnenglu.com/jinq0123/archive/2007/09/20/PP3edBasicEmbeddingTechniques.html</guid><wfw:comment>http://m.shnenglu.com/jinq0123/comments/32521.html</wfw:comment><comments>http://m.shnenglu.com/jinq0123/archive/2007/09/20/PP3edBasicEmbeddingTechniques.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/jinq0123/comments/commentRss/32521.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/jinq0123/services/trackbacks/32521.html</trackback:ping><description><![CDATA[     鎽樿: Programming Python, 3rd Edition 緲昏瘧銆傛湰鑺傚垪涓句簡鍑犱釜綆鐭殑C紼嬪簭錛屽畠浠互涓縐嶅艦寮忔垨鍙︿竴縐嶅艦寮忚繍琛孭ython浠g爜錛屾潵婕旂ず瀹為檯鐨勯氱敤鐨勫唴宓屾妧鏈?nbsp; <a href='http://m.shnenglu.com/jinq0123/archive/2007/09/20/PP3edBasicEmbeddingTechniques.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/jinq0123/aggbug/32521.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/jinq0123/" target="_blank">閲戝簡</a> 2007-09-20 09:44 <a href="http://m.shnenglu.com/jinq0123/archive/2007/09/20/PP3edBasicEmbeddingTechniques.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>浣跨敤Python鐨刲ogging.confighttp://m.shnenglu.com/jinq0123/archive/2007/09/03/UsingLoggingConfig.html閲戝簡閲戝簡Mon, 03 Sep 2007 03:35:00 GMThttp://m.shnenglu.com/jinq0123/archive/2007/09/03/UsingLoggingConfig.htmlhttp://m.shnenglu.com/jinq0123/comments/31449.htmlhttp://m.shnenglu.com/jinq0123/archive/2007/09/03/UsingLoggingConfig.html#Feedback6http://m.shnenglu.com/jinq0123/comments/commentRss/31449.htmlhttp://m.shnenglu.com/jinq0123/services/trackbacks/31449.html闃呰鍏ㄦ枃

閲戝簡 2007-09-03 11:35 鍙戣〃璇勮
]]>
(Python緙栫▼)Jython錛欽ava鐨凱ythonhttp://m.shnenglu.com/jinq0123/archive/2007/08/08/JythonPythonForJava.html閲戝簡閲戝簡Wed, 08 Aug 2007 10:52:00 GMThttp://m.shnenglu.com/jinq0123/archive/2007/08/08/JythonPythonForJava.htmlhttp://m.shnenglu.com/jinq0123/comments/29589.htmlhttp://m.shnenglu.com/jinq0123/archive/2007/08/08/JythonPythonForJava.html#Feedback0http://m.shnenglu.com/jinq0123/comments/commentRss/29589.htmlhttp://m.shnenglu.com/jinq0123/services/trackbacks/29589.html闃呰鍏ㄦ枃

閲戝簡 2007-08-08 18:52 鍙戣〃璇勮
]]>
wxPython涓璛RC鏂囦歡瀵?i18N鐨勬敮鎸?/title><link>http://m.shnenglu.com/jinq0123/archive/2007/07/24/XRCI18N.html</link><dc:creator>閲戝簡</dc:creator><author>閲戝簡</author><pubDate>Tue, 24 Jul 2007 02:24:00 GMT</pubDate><guid>http://m.shnenglu.com/jinq0123/archive/2007/07/24/XRCI18N.html</guid><wfw:comment>http://m.shnenglu.com/jinq0123/comments/28684.html</wfw:comment><comments>http://m.shnenglu.com/jinq0123/archive/2007/07/24/XRCI18N.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/jinq0123/comments/commentRss/28684.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/jinq0123/services/trackbacks/28684.html</trackback:ping><description><![CDATA[     鎽樿: 鏈夊叧XRC I18N鐨勭涓涓腑鏂囨枃妗c傝漿鑷猍python-chinese]銆傜敤XRC鐢熸垚wxPython鐨勭晫闈?濡備綍瀹炵幇I18N鍛? wxPython鐨刋RC鏀寔鍖呮嫭浜嗗i18N鐨勬敮鎸併?  <a href='http://m.shnenglu.com/jinq0123/archive/2007/07/24/XRCI18N.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/jinq0123/aggbug/28684.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/jinq0123/" target="_blank">閲戝簡</a> 2007-07-24 10:24 <a href="http://m.shnenglu.com/jinq0123/archive/2007/07/24/XRCI18N.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item><item><title>Python logging RotatingFileHandler bughttp://m.shnenglu.com/jinq0123/archive/2007/07/23/RotatingFileHandlerBug.html閲戝簡閲戝簡Mon, 23 Jul 2007 03:13:00 GMThttp://m.shnenglu.com/jinq0123/archive/2007/07/23/RotatingFileHandlerBug.htmlhttp://m.shnenglu.com/jinq0123/comments/28619.htmlhttp://m.shnenglu.com/jinq0123/archive/2007/07/23/RotatingFileHandlerBug.html#Feedback0http://m.shnenglu.com/jinq0123/comments/commentRss/28619.htmlhttp://m.shnenglu.com/jinq0123/services/trackbacks/28619.html  闃呰鍏ㄦ枃

閲戝簡 2007-07-23 11:13 鍙戣〃璇勮
]]>
Python鑾峰彇紼嬪簭鎵鍦ㄧ洰褰?/title><link>http://m.shnenglu.com/jinq0123/archive/2007/07/18/GetMainDir.html</link><dc:creator>閲戝簡</dc:creator><author>閲戝簡</author><pubDate>Wed, 18 Jul 2007 07:38:00 GMT</pubDate><guid>http://m.shnenglu.com/jinq0123/archive/2007/07/18/GetMainDir.html</guid><wfw:comment>http://m.shnenglu.com/jinq0123/comments/28288.html</wfw:comment><comments>http://m.shnenglu.com/jinq0123/archive/2007/07/18/GetMainDir.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://m.shnenglu.com/jinq0123/comments/commentRss/28288.html</wfw:commentRss><trackback:ping>http://m.shnenglu.com/jinq0123/services/trackbacks/28288.html</trackback:ping><description><![CDATA[     鎽樿: 瑙e喅__file__鎴杝ys.argv[0]鍦╬y2exe涓嬪け鏁堢殑闂銆傞夎嚜pathutils妯″潡銆? These functions get us our directory name # Even if py2exe or another freeze tool has been used  <a href='http://m.shnenglu.com/jinq0123/archive/2007/07/18/GetMainDir.html'>闃呰鍏ㄦ枃</a><img src ="http://m.shnenglu.com/jinq0123/aggbug/28288.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://m.shnenglu.com/jinq0123/" target="_blank">閲戝簡</a> 2007-07-18 15:38 <a href="http://m.shnenglu.com/jinq0123/archive/2007/07/18/GetMainDir.html#Feedback" target="_blank" style="text-decoration:none;">鍙戣〃璇勮</a></div>]]></description></item></channel></rss> <a href="http://m.shnenglu.com/">青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品</a> <div style="position:fixed;left:-9000px;top:-9000px;"><font id="pjuwb"></font><button id="pjuwb"><pre id="pjuwb"></pre></button><sub id="pjuwb"></sub><tbody id="pjuwb"><var id="pjuwb"><address id="pjuwb"></address></var></tbody><listing id="pjuwb"><label id="pjuwb"><strong id="pjuwb"></strong></label></listing><wbr id="pjuwb"><small id="pjuwb"><tbody id="pjuwb"></tbody></small></wbr><ins id="pjuwb"><xmp id="pjuwb"></xmp></ins><style id="pjuwb"></style><label id="pjuwb"><em id="pjuwb"><li id="pjuwb"></li></em></label><samp id="pjuwb"></samp><menu id="pjuwb"><input id="pjuwb"></input></menu><pre id="pjuwb"><tbody id="pjuwb"><tfoot id="pjuwb"><button id="pjuwb"></button></tfoot></tbody></pre><form id="pjuwb"></form><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"><sup id="pjuwb"></sup></label></style></i><li id="pjuwb"><table id="pjuwb"><abbr id="pjuwb"></abbr></table></li><video id="pjuwb"></video><dfn id="pjuwb"></dfn><progress id="pjuwb"></progress><strong id="pjuwb"></strong><mark id="pjuwb"></mark><em id="pjuwb"></em><tbody id="pjuwb"><p id="pjuwb"><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike></p></tbody><option id="pjuwb"></option><strike id="pjuwb"></strike><u id="pjuwb"></u><td id="pjuwb"><center id="pjuwb"><tr id="pjuwb"></tr></center></td><em id="pjuwb"><mark id="pjuwb"><em id="pjuwb"><tt id="pjuwb"></tt></em></mark></em><strong id="pjuwb"></strong><wbr id="pjuwb"></wbr><s id="pjuwb"></s><strong id="pjuwb"></strong><legend id="pjuwb"></legend><nav id="pjuwb"></nav><dl id="pjuwb"><th id="pjuwb"><dl id="pjuwb"></dl></th></dl><noframes id="pjuwb"><ins id="pjuwb"></ins></noframes><font id="pjuwb"></font><strike id="pjuwb"><i id="pjuwb"><style id="pjuwb"><label id="pjuwb"></label></style></i></strike><output id="pjuwb"></output><thead id="pjuwb"><pre id="pjuwb"></pre></thead><source id="pjuwb"></source><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem><pre id="pjuwb"><span id="pjuwb"><pre id="pjuwb"><big id="pjuwb"></big></pre></span></pre><cite id="pjuwb"><fieldset id="pjuwb"><s id="pjuwb"><rt id="pjuwb"></rt></s></fieldset></cite><big id="pjuwb"><progress id="pjuwb"><big id="pjuwb"></big></progress></big><samp id="pjuwb"><delect id="pjuwb"></delect></samp><dl id="pjuwb"></dl><strike id="pjuwb"><nav id="pjuwb"><dl id="pjuwb"><strong id="pjuwb"></strong></dl></nav></strike><tbody id="pjuwb"><b id="pjuwb"><optgroup id="pjuwb"><rp id="pjuwb"></rp></optgroup></b></tbody><em id="pjuwb"></em><xmp id="pjuwb"><blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote></xmp> <i id="pjuwb"><abbr id="pjuwb"><i id="pjuwb"><abbr id="pjuwb"></abbr></i></abbr></i><center id="pjuwb"><acronym id="pjuwb"><center id="pjuwb"></center></acronym></center><pre id="pjuwb"></pre><ul id="pjuwb"><thead id="pjuwb"></thead></ul><blockquote id="pjuwb"><pre id="pjuwb"><sup id="pjuwb"></sup></pre></blockquote><acronym id="pjuwb"></acronym><big id="pjuwb"><s id="pjuwb"></s></big><th id="pjuwb"></th><th id="pjuwb"></th><tbody id="pjuwb"></tbody><thead id="pjuwb"><strike id="pjuwb"></strike></thead><th id="pjuwb"><dl id="pjuwb"><wbr id="pjuwb"></wbr></dl></th><dl id="pjuwb"><strong id="pjuwb"></strong></dl><abbr id="pjuwb"><noframes id="pjuwb"><noscript id="pjuwb"></noscript></noframes></abbr><td id="pjuwb"><ol id="pjuwb"></ol></td><li id="pjuwb"><noscript id="pjuwb"><abbr id="pjuwb"></abbr></noscript></li><small id="pjuwb"><bdo id="pjuwb"><nav id="pjuwb"></nav></bdo></small><style id="pjuwb"></style><optgroup id="pjuwb"><table id="pjuwb"></table></optgroup><center id="pjuwb"><tr id="pjuwb"><dfn id="pjuwb"></dfn></tr></center><th id="pjuwb"></th><u id="pjuwb"></u><tfoot id="pjuwb"><legend id="pjuwb"><i id="pjuwb"></i></legend></tfoot><mark id="pjuwb"></mark><meter id="pjuwb"></meter><nav id="pjuwb"></nav><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><acronym id="pjuwb"><pre id="pjuwb"><acronym id="pjuwb"><ul id="pjuwb"></ul></acronym></pre></acronym><nobr id="pjuwb"></nobr><sub id="pjuwb"><th id="pjuwb"><menuitem id="pjuwb"><wbr id="pjuwb"></wbr></menuitem></th></sub><thead id="pjuwb"><sub id="pjuwb"></sub></thead><ul id="pjuwb"><address id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></address></ul><dfn id="pjuwb"></dfn><pre id="pjuwb"></pre><input id="pjuwb"><cite id="pjuwb"><fieldset id="pjuwb"></fieldset></cite></input><u id="pjuwb"><form id="pjuwb"><u id="pjuwb"></u></form></u><kbd id="pjuwb"><em id="pjuwb"><mark id="pjuwb"></mark></em></kbd><tr id="pjuwb"></tr><del id="pjuwb"><form id="pjuwb"><address id="pjuwb"></address></form></del><tfoot id="pjuwb"><legend id="pjuwb"><ol id="pjuwb"><dl id="pjuwb"></dl></ol></legend></tfoot><menu id="pjuwb"><nobr id="pjuwb"><th id="pjuwb"><nobr id="pjuwb"></nobr></th></nobr></menu><fieldset id="pjuwb"></fieldset><pre id="pjuwb"><blockquote id="pjuwb"><samp id="pjuwb"></samp></blockquote></pre><xmp id="pjuwb"><sup id="pjuwb"><pre id="pjuwb"></pre></sup></xmp><span id="pjuwb"><progress id="pjuwb"></progress></span><font id="pjuwb"></font><var id="pjuwb"><abbr id="pjuwb"></abbr></var><strong id="pjuwb"><label id="pjuwb"><i id="pjuwb"><legend id="pjuwb"></legend></i></label></strong><tr id="pjuwb"><em id="pjuwb"><em id="pjuwb"><output id="pjuwb"></output></em></em></tr><thead id="pjuwb"><strike id="pjuwb"></strike></thead> <acronym id="pjuwb"></acronym><i id="pjuwb"></i><tt id="pjuwb"></tt><rt id="pjuwb"><source id="pjuwb"><rt id="pjuwb"></rt></source></rt><strike id="pjuwb"><acronym id="pjuwb"></acronym></strike><del id="pjuwb"></del><font id="pjuwb"><output id="pjuwb"><ins id="pjuwb"><output id="pjuwb"></output></ins></output></font><kbd id="pjuwb"><tr id="pjuwb"><kbd id="pjuwb"></kbd></tr></kbd><pre id="pjuwb"><sup id="pjuwb"><delect id="pjuwb"><samp id="pjuwb"></samp></delect></sup></pre><samp id="pjuwb"></samp><track id="pjuwb"></track><tr id="pjuwb"></tr><center id="pjuwb"></center><fieldset id="pjuwb"></fieldset><i id="pjuwb"></i><td id="pjuwb"></td><rt id="pjuwb"></rt><object id="pjuwb"></object><pre id="pjuwb"><progress id="pjuwb"><sub id="pjuwb"><thead id="pjuwb"></thead></sub></progress></pre><kbd id="pjuwb"><tr id="pjuwb"><option id="pjuwb"></option></tr></kbd><output id="pjuwb"><ins id="pjuwb"></ins></output><ol id="pjuwb"></ol><source id="pjuwb"></source><strong id="pjuwb"></strong><ruby id="pjuwb"></ruby><sub id="pjuwb"><meter id="pjuwb"><menuitem id="pjuwb"><meter id="pjuwb"></meter></menuitem></meter></sub><pre id="pjuwb"></pre><center id="pjuwb"></center><tr id="pjuwb"><tbody id="pjuwb"><xmp id="pjuwb"><dd id="pjuwb"></dd></xmp></tbody></tr><video id="pjuwb"></video><pre id="pjuwb"></pre><form id="pjuwb"><optgroup id="pjuwb"></optgroup></form><samp id="pjuwb"></samp><kbd id="pjuwb"></kbd><strong id="pjuwb"><option id="pjuwb"></option></strong><object id="pjuwb"></object><abbr id="pjuwb"><noframes id="pjuwb"><abbr id="pjuwb"></abbr></noframes></abbr><ul id="pjuwb"><del id="pjuwb"><button id="pjuwb"><pre id="pjuwb"></pre></button></del></ul><abbr id="pjuwb"></abbr><strong id="pjuwb"><code id="pjuwb"><strong id="pjuwb"></strong></code></strong><option id="pjuwb"></option><optgroup id="pjuwb"><bdo id="pjuwb"><code id="pjuwb"></code></bdo></optgroup><mark id="pjuwb"><em id="pjuwb"><font id="pjuwb"></font></em></mark><acronym id="pjuwb"><code id="pjuwb"></code></acronym><dl id="pjuwb"></dl><em id="pjuwb"></em><object id="pjuwb"><input id="pjuwb"><object id="pjuwb"></object></input></object><output id="pjuwb"><dd id="pjuwb"></dd></output><option id="pjuwb"><button id="pjuwb"><option id="pjuwb"></option></button></option><small id="pjuwb"></small></div> <a href="http://22400com.com" target="_blank">一区二区三区久久久</a>| <a href="http://6faa.com" target="_blank">欧美一区二区黄</a>| <a href="http://zunguidq.com" target="_blank">国产精品theporn</a>| <a href="http://400206.com" target="_blank">欧美三级视频在线</a>| <a href="http://beeperagain.com" target="_blank">国产精品第一页第二页第三页</a>| <a href="http://sdtricoop.com" target="_blank">欧美黄网免费在线观看</a>| <a href="http://rljyy.com" target="_blank">欧美人与禽性xxxxx杂性</a>| <a href="http://85995m.com" target="_blank">欧美精品激情</a>| <a href="http://012928.com" target="_blank">国产伦精品一区二区三区免费迷 </a>| <a href="http://jobmrleehxx.com" target="_blank">亚洲免费在线电影</a>| <a href="http://www18889.com" target="_blank">亚洲欧美国产va在线影院</a>| <a href="http://jizz16.com" target="_blank">欧美在线视频不卡</a>| <a href="http://by2866.com" target="_blank">你懂的视频一区二区</a>| <a href="http://677cn.com" target="_blank">欧美激情网站在线观看</a>| <a href="http://551731.com" target="_blank">亚洲精品国偷自产在线99热</a>| <a href="http://wwwmm7777.com" target="_blank">亚洲日本欧美天堂</a>| <a href="http://www-5013.com" target="_blank">亚洲视频axxx</a>| <a href="http://sihu1515hh.com" target="_blank">久久精品人人做人人综合</a>| <a href="http://universehb.com" target="_blank">免费人成精品欧美精品</a>| <a href="http://278538.com" target="_blank">国产精品久久激情</a>| <a href="http://anal-movie-teen.com" target="_blank">狠久久av成人天堂</a>| <a href="http://zuan3344.com" target="_blank">一区二区三区成人</a>| <a href="http://asanny.com" target="_blank">久久精品在线观看</a>| <a href="http://wwwmy77757.com" target="_blank">亚洲精品久久久久久一区二区</a>| <a href="http://333666333.com" target="_blank">亚洲精品久久久久</a>| <a href="http://hgx123.com" target="_blank">欧美一区二区三区四区在线</a>| <a href="http://wwwhaodd116.com" target="_blank">久久综合九色综合欧美就去吻 </a>| <a href="http://fsxinruiph.com" target="_blank">国产精品捆绑调教</a>| <a href="http://cxjzcl.com" target="_blank">在线播放日韩专区</a>| <a href="http://cabenn.com" target="_blank">午夜精品区一区二区三</a>| <a href="http://jiuzuifusheng.com" target="_blank">久久婷婷人人澡人人喊人人爽 </a>| <a href="http://88xjj.com" target="_blank">亚洲性人人天天夜夜摸</a>| <a href="http://nachang5117.com" target="_blank">久久精品毛片</a>| <a href="http://mfgun.com" target="_blank">一本久道综合久久精品</a>| <a href="http://320ur.com" target="_blank">国产综合香蕉五月婷在线</a>| <a href="http://1277k.com" target="_blank">欧美久久婷婷综合色</a>| <a href="http://785448.com" target="_blank">国产亚洲成精品久久</a>| <a href="http://9a5x.com" target="_blank">99精品欧美一区二区三区</a>| <a href="http://7373se.com" target="_blank">久久av二区</a>| <a href="http://sinojinxing.com" target="_blank">日韩午夜激情av</a>| <a href="http://miya2223.com" target="_blank">久久综合色播五月</a>| <a href="http://1515t.com" target="_blank">国产日韩精品在线播放</a>| <a href="http://www-893333.com" target="_blank">av成人免费</a>| <a href="http://www-49hk.com" target="_blank">欧美激情亚洲视频</a>| <a href="http://3990033.com" target="_blank">久久久人成影片一区二区三区观看</a>| <a href="http://nebnb89.com" target="_blank">国产精品成人一区</a>| <a href="http://817794.com" target="_blank">正在播放亚洲</a>| <a href="http://tv-miya188.com" target="_blank">91久久嫩草影院一区二区</a>| <a href="http://maomi998.com" target="_blank">久久精品99久久香蕉国产色戒</a>| <a href="http://1323666.com" target="_blank">国产精品vip</a>| <a href="http://621767.com" target="_blank">99视频在线观看一区三区</a>| <a href="http://chinasck.com" target="_blank">母乳一区在线观看</a>| <a href="http://wewe520.com" target="_blank">久久精品二区三区</a>| <a href="http://www44448.com" target="_blank">国产偷国产偷亚洲高清97cao</a>| <a href="http://111491.com" target="_blank">亚洲在线播放电影</a>| <a href="http://5mcm.com" target="_blank">a91a精品视频在线观看</a>| <a href="http://989p.com" target="_blank">欧美精品免费播放</a>| <a href="http://zhongqingshiye.com" target="_blank">亚洲精品一区二区三区婷婷月</a>| <a href="http://shaijia123.com" target="_blank">免费成人性网站</a>| <a href="http://668527.com" target="_blank">久久一区二区精品</a>| <a href="http://jjy891.com" target="_blank">精品9999</a>| <a href="http://taominze.com" target="_blank">免费日韩成人</a>| <a href="http://562595.com" target="_blank">裸体丰满少妇做受久久99精品</a>| <a href="http://342008.com" target="_blank">亚洲大片免费看</a>| <a href="http://www1126v.com" target="_blank">欧美fxxxxxx另类</a>| <a href="http://atmub.com" target="_blank">久久在线播放</a>| <a href="http://118936.com" target="_blank">99成人在线</a>| <a href="http://xmjhyey.com" target="_blank">亚洲另类一区二区</a>| <a href="http://fjccjq.com" target="_blank">欧美久久久久免费</a>| <a href="http://987kt.com" target="_blank">亚洲欧美日韩在线综合</a>| <a href="http://9kkkb.com" target="_blank">午夜精品视频网站</a>| <a href="http://338pv.com" target="_blank">精品9999</a>| <a href="http://sapronlee.com" target="_blank">亚洲电影av</a>| <a href="http://100736.com" target="_blank">欧美日韩色综合</a>| <a href="http://simextec.com" target="_blank">亚洲欧美成人综合</a>| <a href="http://9a5x.com" target="_blank">欧美在线免费看</a>| <a href="http://tizenkorea.com" target="_blank">亚洲成人在线</a>| <a href="http://llamkos.com" target="_blank">亚洲精品久久久久久下一站</a>| <a href="http://4008305555.com" target="_blank">欧美日韩亚洲一区</a>| <a href="http://51duanxinmao.com" target="_blank">久久福利资源站</a>| <a href="http://dadepaimai.com" target="_blank">久久久.com</a>| <a href="http://0855123.com" target="_blank">99视频超级精品</a>| <a href="http://booyitech.com" target="_blank">亚洲欧美精品中文字幕在线</a>| <a href="http://k37b.com" target="_blank">国产日韩欧美在线视频观看</a>| <a href="http://buyiker.com" target="_blank">久久精品在线</a>| <a href="http://7776701.com" target="_blank">欧美精品在线网站</a>| <a href="http://myav2.com" target="_blank">性伦欧美刺激片在线观看</a>| <a href="http://www068hs.com" target="_blank">欧美影院久久久</a>| <a href="http://www497171a.com" target="_blank">亚洲久久一区</a>| <a href="http://8x27.com" target="_blank">欧美一区二区三区四区在线</a>| <a href="http://amass-ic.com" target="_blank">在线日韩欧美</a>| <a href="http://qhzyxcd.com" target="_blank">正在播放亚洲</a>| <a href="http://402626com.com" target="_blank">在线成人www免费观看视频</a>| <a href="http://www-878009.com" target="_blank">91久久精品国产91久久性色tv</a>| <a href="http://xvideoav99.com" target="_blank">国产精品第一页第二页第三页</a>| <a href="http://duoying668.com" target="_blank">午夜在线观看免费一区</a>| <a href="http://www9797abc.com" target="_blank">欧美精品激情在线</a>| <a href="http://www353488.com" target="_blank">久久成人久久爱</a>| <a href="http://gdvapar.com" target="_blank">欧美高清一区二区</a>| <a href="http://zhengnuoxin.com" target="_blank">欧美亚洲系列</a>| <a href="http://actinview.com" target="_blank">欧美黑人多人双交</a>| <a href="http://www474000c.com" target="_blank">欧美亚洲尤物久久</a>| <a href="http://www18818.com" target="_blank">理论片一区二区在线</a>| <a href="http://18mmcg.com" target="_blank">亚洲欧美综合v</a>| <a href="http://k37b.com" target="_blank">欧美福利视频一区</a>| <a href="http://wanmajc.com" target="_blank">久久久亚洲影院你懂的</a>| <a href="http://szth186.com" target="_blank">国产精品videossex久久发布</a>| <a href="http://725443.com" target="_blank">免费在线亚洲欧美</a>| <a href="http://lzklpc.com" target="_blank">国产精品婷婷午夜在线观看</a>| <a href="http://xxoo668.com" target="_blank">欧美国产亚洲另类动漫</a>| <a href="http://4449998.com" target="_blank">国产日韩一区二区三区在线</a>| <a href="http://kaijiepharm.com" target="_blank">亚洲啪啪91</a>| <a href="http://eastasp.com" target="_blank">亚洲国产精选</a>| <a href="http://1588vip.com" target="_blank">久久久久成人精品免费播放动漫</a>| <a href="http://7782y.com" target="_blank">亚洲一区二区三区影院</a>| <a href="http://www49966.com" target="_blank">欧美大片一区</a>| <a href="http://xuduoshu.com" target="_blank">欧美成人久久</a>| <a href="http://555888666.com" target="_blank">国产综合亚洲精品一区二</a>| <a href="http://wo6wo.com" target="_blank">亚洲视频电影在线</a>| <a href="http://a718fun.com" target="_blank">亚洲最新色图</a>| <a href="http://ximaimicro.com" target="_blank">欧美成人高清</a>| <a href="http://cdcpt.com" target="_blank">亚洲高清二区</a>| <a href="http://6faa.com" target="_blank">亚洲黑丝在线</a>| <a href="http://eee285.com" target="_blank">美国三级日本三级久久99</a>| <a href="http://848585.com" target="_blank">久久久亚洲国产天美传媒修理工 </a>| <a href="http://22abb.com" target="_blank">欧美体内she精视频</a>| <a href="http://www278999.com" target="_blank">亚洲国产精品成人综合</a>| <a href="http://www-369111.com" target="_blank">黄色精品一二区</a>| <a href="http://szth186.com" target="_blank">亚洲欧美日韩国产一区二区三区</a>| <a href="http://wwwcc7777.com" target="_blank">99re66热这里只有精品4</a>| <a href="http://www-18873.com" target="_blank">噜噜噜躁狠狠躁狠狠精品视频 </a>| <a href="http://www49718.com" target="_blank">免费日韩精品中文字幕视频在线</a>| <a href="http://www11108b.com" target="_blank">国产精品区一区二区三区</a>| <a href="http://5553303.com" target="_blank">亚洲精品视频二区</a>| <a href="http://p54y.com" target="_blank">99成人在线</a>| <a href="http://b27227.com" target="_blank">欧美日韩国产美</a>| <a href="http://xhs1039.com" target="_blank">亚洲精品少妇网址</a>| <a href="http://www-36900.com" target="_blank">夜夜爽99久久国产综合精品女不卡 </a>| <a href="http://jxrisen.com" target="_blank">亚洲视频在线免费观看</a>| <a href="http://jiyixitong.com" target="_blank">欧美日韩精品</a>| <a href="http://tongrenyaoye.com" target="_blank">9色porny自拍视频一区二区</a>| <a href="http://sh738.com" target="_blank">亚洲一区二区黄色</a>| <a href="http://hbzbjxzz.com" target="_blank">国产精品三级视频</a>| <a href="http://o6186.com" target="_blank">欧美亚洲日本网站</a>| <a href="http://papala4444.com" target="_blank">久久精品亚洲一区二区三区浴池 </a>| <a href="http://mmmm57.com" target="_blank">亚洲精品一区二区三区福利</a>| <a href="http://8135777.com" target="_blank">欧美精品九九</a>| <a href="http://xianconnector.com" target="_blank">一区二区三区免费在线观看</a>| <a href="http://m-pisiwa.com" target="_blank">亚洲手机成人高清视频</a>| <a href="http://rosi2030.com" target="_blank">国产精品成人一区二区三区吃奶</a>| <a href="http://o6186.com" target="_blank">亚洲私人影院</a>| <a href="http://yymh1056.com" target="_blank">欧美激情一区二区三区在线视频观看</a>| <a href="http://heshundadi.com" target="_blank">91久久精品国产91久久性色</a>| <a href="http://caofujia.com" target="_blank">欧美成年人在线观看</a>| <a href="http://erosgems.com" target="_blank">亚洲精品视频一区二区三区</a>| <a href="http://kedou09.com" target="_blank">亚洲视频中文字幕</a>| <a href="http://55kam.com" target="_blank">国产日韩欧美在线观看</a>| <a href="http://ourskycity.com" target="_blank">欧美一区二区三区四区高清</a>| <a href="http://hgx123.com" target="_blank">免费日韩视频</a>| <a href="http://xpj694.com" target="_blank">亚洲永久精品国产</a>| <a href="http://www66441.com" target="_blank">国产手机视频精品</a>| <a href="http://xiphosoft.com" target="_blank">狼狼综合久久久久综合网 </a>| <a href="http://1000kongbao.com" target="_blank">亚洲成色999久久网站</a>| <a href="http://521531.com" target="_blank">亚洲精品一区二</a>| <a href="http://677679.com" target="_blank">国产精品一区二区欧美</a>| <a href="http://0773ye.com" target="_blank">久久精品一区二区三区中文字幕</a>| <a href="http://www35211.com" target="_blank">可以免费看不卡的av网站</a>| <a href="http://yw1998.com" target="_blank">亚洲欧洲在线播放</a>| <a href="http://428820.com" target="_blank">欧美色图首页</a>| <a href="http://javdb04.com" target="_blank">久久久久在线</a>| <a href="http://49028b.com" target="_blank">一本色道婷婷久久欧美</a>| <a href="http://showrti.com" target="_blank">久久全国免费视频</a>| <a href="http://990288.com" target="_blank">一本综合精品</a>| <a href="http://521nb.com" target="_blank">伊人婷婷久久</a>| <a href="http://www-662553.com" target="_blank">欧美午夜在线观看</a>| <a href="http://74w4.com" target="_blank">久久成人免费电影</a>| <a href="http://8xn66w.com" target="_blank">a91a精品视频在线观看</a>| <a href="http://jiujiire.com" target="_blank">乱码第一页成人</a>| <a href="http://9lunli.com" target="_blank">午夜亚洲福利</a>| <a href="http://3dprintingferuima.com" target="_blank">亚洲精品欧洲精品</a>| <a href="http://322033.com" target="_blank">国产一区二区精品丝袜</a>| <a href="http://baluka-tw.com" target="_blank">欧美精品日韩综合在线</a>| <a href="http://www-369111.com" target="_blank">午夜精品久久久久久久男人的天堂</a>| <a href="http://y65v.com" target="_blank">欧美国产国产综合</a>| <a href="http://wwww20.com" target="_blank">欧美一区二区国产</a>| <a href="http://kpd034.com" target="_blank">在线视频亚洲一区</a>| <a href="http://niceboybao.com" target="_blank">亚洲电影免费观看高清完整版在线观看</a>| <a href="http://www-772773.com" target="_blank">欧美日韩视频不卡</a>| <a href="http://wwww999.com" target="_blank">美日韩精品免费观看视频</a>| <a href="http://coolpaly.com" target="_blank">午夜精品99久久免费</a>| <a href="http://339254.com" target="_blank">亚洲精品永久免费</a>| <a href="http://3dprintingferuima.com" target="_blank">六月丁香综合</a>| <a href="http://cloakok.com" target="_blank">久久电影一区</a>| <a href="http://julong-ads.com" target="_blank">亚洲欧美国产高清va在线播</a>| <a href="http://wwwhhh396.com" target="_blank">91久久国产综合久久91精品网站</a>| <a href="http://easypufu.com" target="_blank">国产精品视频最多的网站</a>| <a href="http://580078.com" target="_blank">欧美母乳在线</a>| <a href="http://543422.com" target="_blank">欧美激情一区二区三区高清视频</a>| <a href="http://fjrxzscl.com" target="_blank">久久久爽爽爽美女图片</a>| <a href="http://8842aa.com" target="_blank">性8sex亚洲区入口</a>| <script> (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })(); </script> </body>