Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1125547
  • 博文数量: 170
  • 博客积分: 1603
  • 博客等级: 上尉
  • 技术积分: 1897
  • 用 户 组: 普通用户
  • 注册时间: 2010-07-09 15:54
文章分类

全部博文(170)

文章存档

2016年(27)

2015年(21)

2014年(27)

2013年(21)

2012年(7)

2011年(67)

我的朋友

分类: Python/Ruby

2014-10-25 12:58:39

python编辑大文思路。
先通过f.open对象readline找到需要编辑开始和结束的字节数。
再通过mmap加偏移量映射这部分文件然后写回。


ucloud的登录图片比较简单,还是能实现自动登录的。
由于ucloud的数据库是备份全库的,所以需要编辑ucloud的数据库文件,将mysql库删除再倒入本地数据库,这就需要编辑大文件并修改,于是就有了上面的python编辑大文件。
导入的时候,可以用sed把所有imnndb替换为MyISAM加速导入

下面上代码(部分参数和url与ucloud机房有关,比如1001是ucloud A机房)  需要安装pyocr

点击(此处)折叠或打开

  1. #!/usr/bin/python
  2. # -*- coding: UTF-8 -*-

  3. import urllib
  4. import urllib2
  5. import cookielib
  6. import shutil
  7. import os
  8. import sys
  9. import re
  10. import subprocess
  11. import pyocr
  12. import json
  13. import Image
  14. import time
  15. #import pdb
  16. import mmap
  17. import pwd

  18. def open_mainpage():
  19.     #打开登录页面,初始化opener
  20.     url_main_page = ''
  21.     cj = cookielib.LWPCookieJar()
  22.     opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
  23.     urllib2.install_opener(opener)
  24.     res = urllib2.Request(url_main_page)
  25.     req = opener.open(res)
  26.     return opener, req.read()


  27. def get_lt_code(main_pages):
  28.     #从登录页面获取LT code,这是登录时需要post的一个value
  29.     filter_lt = re.compile('LT-[A-Za-z0-9]{20,40}')
  30.     page_text = main_pages.strip()
  31.     if filter_lt.search(page_text,re.X) is not None:
  32.         return filter_lt.search(page_text).group(0)
  33.     else:
  34.         #print main_pages
  35.         return ''


  36. def get_verification_code(opener, verification_code_file = 'D:\\Downloads\\1.png'):
  37.     #获取验证码文件,并用pyocr解析验证码
  38.     url_verification_code = '/verification_code'
  39.     res = urllib2.Request(url_verification_code)
  40.     req = opener.open(res)
  41.     
  42.     try:
  43.         if os.path.isfile(verification_code_file):os.remove(verification_code_file)
  44.         with open(verification_code_file, 'wb') as fp:
  45.             shutil.copyfileobj(req, fp)
  46.     except:
  47.         return None
  48.     tools = pyocr.get_available_tools()[:]
  49.     if len(tools) == 0:
  50.         print("No OCR tool found")
  51.         return None
  52.     print("Using [%s] to get key from image" % (tools[0].get_name()))
  53.     verification_code = tools[1].image_to_string(Image.open(verification_code_file))
  54.     return str(verification_code)


  55. def post_login(opener, post_data):
  56.     url_login = ''
  57.     for i in range(5):
  58.         post_data['verify_code'] = get_verification_code(opener, '/tmp/1.png')
  59.         if post_data['verify_code'] is None:
  60.             continue
  61.         res = urllib2.Request(url_login, urllib.urlencode(post_data))
  62.         req = opener.open(res)
  63.         json_response = json.loads(req.read())
  64.         if json_response['ret_code'] == 0:
  65.             return True
  66.         else:
  67.             print json_response['ret_code']
  68.             #print json_response['error_message']
  69.             if i == 4:
  70.                 return False
  71.             continue


  72. def page_db(opener):
  73.     #切换到dbbackup页面
  74.     url_db = ''
  75.     headers = {'User-Agent' : 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)'}
  76.     res = urllib2.Request(url_db, headers = headers)
  77.     req = opener.open(res)
  78.     #print req.read()


  79. def get_db_list(opener=None, db_name_list=None):
  80.     #获取db列表
  81.     if db_name_list is None:
  82.         return None
  83.     db_list = None
  84.     #先查询本地db列表文件,如果存在不再去ucloud获取db列表
  85.     try:
  86.         f = open('./db.list')
  87.         db_list_text = f.readlines()
  88.         f.close()
  89.         db_list = json.loads(db_list_text[0].strip())['data']
  90.     except Exception,e:
  91.         print 'error',e
  92.         return None

  93.     #不存在本地db列表,去ucloud获取
  94.     if db_list is None or type(db_list) != type([]):
  95.         list_url = '%d' % int(time.time()*1000)
  96.         print 'list not ok! get url [%s]' % list_url
  97.         try:
  98.             #pdb.set_trace()
  99.             res = urllib2.Request(list_url)
  100.             req = opener.open(res)
  101.             #print 'req is ',req.read().strip()
  102.             json_text = req.read()
  103.             db_list = json.loads(json_text.strip())['data']
  104.             try:
  105.                 f = open('./db.list','w')
  106.                 f.writelines(json_text)
  107.                 f.close()
  108.             except Exception, e:
  109.                 print 'wtfffff',e
  110.                 pass
  111.         except Exception,e:
  112.             print 'error open db_list url', e
  113.         
  114.     if db_list is None or type(db_list) != type([]):
  115.         return None

  116.     db_dict = {}
  117.     for db in db_list:
  118.         if db['instance_name'] in db_name_list:
  119.             db_dict[db['instance_name']] = {}
  120.             db_dict[db['instance_name']]['db_id'] = db['db_id']
  121.             db_dict[db['instance_name']]['ip'] = db['virtual_ip']
  122.             db_dict[db['instance_name']]['port'] = db['port']

  123.     return db_dict


  124. def get_down_url(opener, db_dict):
  125.     #获取db文件下载地址
  126.     for instance_name in db_dict.keys():
  127.         api_get_download_id = '%s&use_session=yes&format=json®ion_id=1001&zone_id=1&_=%d' % (db_dict[instance_name]['db_id'],int(time.time()*1000))
  128.         api_get_download = ''
  129.         #print api_get_download_id
  130.         back_list = None
  131.         try:
  132.             #pdb.set_trace()
  133.             res = urllib2.Request(api_get_download_id)
  134.             req = opener.open(res)
  135.             #print 'req is ',req.read().strip()
  136.             json_text = req.read()
  137.             back_list = json.loads(json_text.strip())['data']
  138.         except Exception, e:
  139.             print 'error open get download api',e
  140.        
  141.         if back_list is None:
  142.             return None
  143.         
  144.         post_data = {'backup_id':0, 'use_session':'yes', 'format':'json', 'region_id':1001, 'zone_id':1}
  145.         #print back_list[0],back_list[0].keys()
  146.         if back_list[0]['dbid'] == db_dict[instance_name]['db_id']:
  147.             post_data['backup_id'] = back_list[0]['id']
  148.             #pdb.set_trace()
  149.             headers = {'User-Agent' : 'Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Win64; x64; Trident/6.0)',
  150.                        'X-Requested-With': 'XMLHttpRequest',
  151.                        'Referer': '',
  152.                        'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'}
  153.             res = urllib2.Request(api_get_download, urllib.urlencode(post_data), headers = headers)
  154.             req = opener.open(res)
  155.             down_md5 = req.read()
  156.             #print len(down_md5)
  157.             if len(down_md5) == 40:
  158.                 down_url = '%s' % down_md5
  159.                 db_dict[instance_name]['down_url'] = down_url


  160. def down_file_by_wget(db_dict):
  161.     #使用wget下载db文件
  162.     try:
  163.         shutil.rmtree('./tmp')
  164.     except:
  165.         pass
  166.     time.sleep(5)
  167.     for instance_name in db_dict.keys():
  168.         if 'down_url' in db_dict[instance_name].keys():
  169.             command = '/usr/bin/wget -q %s -O ./%s.tgz' % (db_dict[instance_name]['down_url'], instance_name)
  170.             down_process = subprocess.Popen(command,shell=True)
  171.             down_process.wait()
  172.             #print 'finsh download file %s,start untar' % instance_name
  173.             command = '/bin/tar -xf %s.tgz -C ./' % (instance_name)
  174.             #print command
  175.             untar_process = subprocess.Popen(command,shell=True)
  176.             untar_process.wait()
  177.             #print 'untar finsh'


  178. def import_db(db_dict, max_serach_num=800,max_mysqldb_len=30):
  179.     #将sql文件编辑修改后倒入本地数据库
  180.     page_size = 4096
  181.     return_value = {'code':0, 'reason':'import database success'}
  182.     sql_files = os.listdir('./tmp/')
  183.     if len(sql_files) != len(db_dict.keys()):
  184.         print 'error'
  185.     for file_name in sql_files:
  186.         full_file_path = './tmp/' + file_name
  187.         # delte system database mysql from sql file
  188.         f = open(full_file_path,'r+')
  189.         count_len = 0
  190.         start_len = 0
  191.         end_len = 0
  192.         for i in range(max_serach_num):
  193.             line = f.readline()
  194.             count_len += len(line)
  195.             #获取创建mysql数据库的起始位置
  196.             if line[0:28] == "-- Current Database: `mysql`":
  197.                 print 'fine mysql len is ' + str(count_len)
  198.                 start_len = count_len
  199.             #获取创建mysql数据库的结束位置
  200.             if line[0:40] == "-- Dumping routines for database 'mysql'":
  201.                 end_len = count_len
  202.                 break
  203.             if i == max_serach_num - 1:
  204.                 return_value['code'] = 1
  205.                 return_value['reason'] = 'find mysql databse start or end line fail over max'
  206.                 return return_value
  207.         if not end_len > start_len:
  208.                 return_value['code'] = 1
  209.                 return_value['reason'] = 'find mysql databse start or end line fail'
  210.                 return return_value

  211.         #偏移量必须是pagesize的整数倍,补全下偏移量
  212.         completion_pagesize = start_len % page_size
  213.         print 'cp size is %d ' % completion_pagesize
  214.         start_len = start_len - completion_pagesize
  215.         mmap_len = end_len - start_len
  216.         #映射数据库文件 创建mysql的文件断
  217.         map = mmap.mmap(f.fileno(), length=mmap_len, access = mmap.ACCESS_WRITE, offset=start_len)

  218.         mark_start = 0
  219.         mark_end = 0
  220.         for i in range(max_mysqldb_len):
  221.             mark = map.tell()
  222.             line = map.readline()
  223.             print line
  224.             if line[0:28] == "-- Current Database: `mysql`":
  225.                 #创建位置标记
  226.                 mark_start = mark
  227.             if line[0:40] == "-- Dumping routines for database 'mysql'":
  228.                 #结束位置标记
  229.                 mark_end = map.tell()
  230.                 break
  231.             if i == max_mysqldb_len - 1 :
  232.                 return_value['code'] = 1
  233.                 return_value['reason'] = 'mysql database too large!'

  234.         #头3字节转为注释符号
  235.         map[mark_start:mark_start+3] = '/*\n'
  236.         #用@填充
  237.         for k in range(mark_start+3, mark_end):
  238.             map[k] = '@'
  239.         #尾3字节添加注释符号
  240.         map[-3:mark_end] = '*/\n'
  241.         map.flush()
  242.         f.close()

  243.         print 'delete databae mysql.mysql finsh!!'
  244.         # change innodb to myisam
  245.         command = "/bin/sed -i s/^\)\ ENGINE=InnoDB/\)\ ENGINE=MyISAM/ %s" % full_file_path
  246.         print command
  247.         sed_process = subprocess.Popen(command,shell=True)
  248.         sed_process.wait()
  249.         # import sql file
  250.         command = '/usr/bin/mysql -uroot -S /var/lib/mysql/mysql_tmp.sock < %s' % full_file_path
  251.         import_process = subprocess.Popen(command,shell=True)
  252.         import_process.wait()
  253.         return return_value



  254. def main():
  255.     curuid = os.getuid()
  256.     user_info = pwd.getpwuid(curuid)
  257.     home_dir = user_info[5]
  258.     user_name = user_info[0]
  259.     crontab_dir = home_dir + '/crontab_shell/'
  260.     try:
  261.         os.chdir(crontab_dir)
  262.     # print os.getcwd()
  263.     except:
  264.         return None
  265.     #return None
  266.     post_data = {}
  267.     post_data['username'] = '帐号'
  268.     post_data['password'] = '密码'
  269.     post_data['verify_code'] = ''
  270.     post_data['lt'] = ''
  271.     post_data['service'] = ''
  272.     
  273.     global_openr = None
  274.     global_openr, main_pages = open_mainpage()
  275.     post_data['lt'] = get_lt_code(main_pages)
  276.     if not post_login(global_openr, post_data):
  277.         print 'get login faile'
  278.         sys.exit(1)
  279.     page_db(global_openr)
  280.     db_name_list = ('your db 1','your db 2')
  281.     db_dict = get_db_list(global_openr, db_name_list)
  282.     get_down_url(global_openr, db_dict)
  283.     print 'down load db file from ucloud'
  284.     down_file_by_wget(db_dict)
  285.     print 'download finsh start import db file'
  286.     print import_db(db_dict, 5000, 5000)


  287. if __name__ == '__main__':
  288.     main()

pyorc需要安装下列东西,自己打包编译

点击(此处)折叠或打开

  1. [root@second rpm]# rpm -ql tesseract
  2. /usr/bin/cntraining
  3. /usr/bin/mftraining
  4. /usr/bin/tesseract
  5. /usr/bin/unicharset_extractor
  6. /usr/bin/wordlist2dawg
  7. /usr/share/doc/tesseract-2.04
  8. /usr/share/doc/tesseract-2.04/AUTHORS
  9. /usr/share/doc/tesseract-2.04/COPYING
  10. /usr/share/doc/tesseract-2.04/ChangeLog
  11. /usr/share/doc/tesseract-2.04/README
  12. /usr/share/tessdata
  13. /usr/share/tessdata/configs
  14. /usr/share/tessdata/configs/api_config
  15. /usr/share/tessdata/configs/box.train
  16. /usr/share/tessdata/configs/box.train.stderr
  17. /usr/share/tessdata/configs/inter
  18. /usr/share/tessdata/configs/kannada
  19. /usr/share/tessdata/configs/makebox
  20. /usr/share/tessdata/configs/unlv
  21. /usr/share/tessdata/confsets
  22. /usr/share/tessdata/tessconfigs
  23. /usr/share/tessdata/tessconfigs/batch
  24. /usr/share/tessdata/tessconfigs/batch.nochop
  25. /usr/share/tessdata/tessconfigs/matdemo
  26. /usr/share/tessdata/tessconfigs/msdemo
  27. /usr/share/tessdata/tessconfigs/nobatch
  28. /usr/share/tessdata/tessconfigs/segdemo
  29. [root@second rpm]# rpm -ql pyocr
  30. /usr/lib/python2.6/site-packages/pyocr
  31. /usr/lib/python2.6/site-packages/pyocr/__init__.py
  32. /usr/lib/python2.6/site-packages/pyocr/__init__.pyc
  33. /usr/lib/python2.6/site-packages/pyocr/__init__.pyo
  34. /usr/lib/python2.6/site-packages/pyocr/builders.py
  35. /usr/lib/python2.6/site-packages/pyocr/builders.pyc
  36. /usr/lib/python2.6/site-packages/pyocr/builders.pyo
  37. /usr/lib/python2.6/site-packages/pyocr/cuneiform.py
  38. /usr/lib/python2.6/site-packages/pyocr/cuneiform.pyc
  39. /usr/lib/python2.6/site-packages/pyocr/cuneiform.pyo
  40. /usr/lib/python2.6/site-packages/pyocr/pyocr.py
  41. /usr/lib/python2.6/site-packages/pyocr/pyocr.pyc
  42. /usr/lib/python2.6/site-packages/pyocr/pyocr.pyo
  43. /usr/lib/python2.6/site-packages/pyocr/tesseract.py
  44. /usr/lib/python2.6/site-packages/pyocr/tesseract.pyc
  45. /usr/lib/python2.6/site-packages/pyocr/tesseract.pyo
  46. /usr/lib/python2.6/site-packages/pyocr/util.py
  47. /usr/lib/python2.6/site-packages/pyocr/util.pyc
  48. /usr/lib/python2.6/site-packages/pyocr/util.pyo
  49. [root@second rpm]# rpm -ql cuneiform
  50. /usr/bin/cuneiform
  51. /usr/lib64/libccom.so.0
  52. /usr/lib64/libccom.so.1.1.0
  53. /usr/lib64/libced.so.0
  54. /usr/lib64/libced.so.1.1.0
  55. /usr/lib64/libcfcompat.so.0
  56. /usr/lib64/libcfcompat.so.1.1.0
  57. /usr/lib64/libcfio.so.0
  58. /usr/lib64/libcfio.so.1.1.0
  59. /usr/lib64/libcimage.so.0
  60. /usr/lib64/libcimage.so.1.1.0
  61. /usr/lib64/libcline.so.0
  62. /usr/lib64/libcline.so.1.1.0
  63. /usr/lib64/libcpage.so.0
  64. /usr/lib64/libcpage.so.1.1.0
  65. /usr/lib64/libcpu32.so.0
  66. /usr/lib64/libcpu32.so.1.1.0
  67. /usr/lib64/libcstr.so.0
  68. /usr/lib64/libcstr.so.1.1.0
  69. /usr/lib64/libctb32.so.0
  70. /usr/lib64/libctb32.so.1.1.0
  71. /usr/lib64/libcuneiform.so.0
  72. /usr/lib64/libcuneiform.so.1.1.0
  73. /usr/lib64/libdif32.so.0
  74. /usr/lib64/libdif32.so.1.1.0
  75. /usr/lib64/libevn32.so.0
  76. /usr/lib64/libevn32.so.1.1.0
  77. /usr/lib64/libexc.so.0
  78. /usr/lib64/libexc.so.1.1.0
  79. /usr/lib64/libfon32.so.0
  80. /usr/lib64/libfon32.so.1.1.0
  81. /usr/lib64/libleo32.so.0
  82. /usr/lib64/libleo32.so.1.1.0
  83. /usr/lib64/liblns32.so.0
  84. /usr/lib64/liblns32.so.1.1.0
  85. /usr/lib64/libloc32.so.0
  86. /usr/lib64/libloc32.so.1.1.0
  87. /usr/lib64/libmmx32.so.0
  88. /usr/lib64/libmmx32.so.1.1.0
  89. /usr/lib64/libmsk32.so.0
  90. /usr/lib64/libmsk32.so.1.1.0
  91. /usr/lib64/libpass2.so.0
  92. /usr/lib64/libpass2.so.1.1.0
  93. /usr/lib64/libr3532.so.0
  94. /usr/lib64/libr3532.so.1.1.0
  95. /usr/lib64/librbal.so.0
  96. /usr/lib64/librbal.so.1.1.0
  97. /usr/lib64/librblock.so.0
  98. /usr/lib64/librblock.so.1.1.0
  99. /usr/lib64/librcorrkegl.so.0
  100. /usr/lib64/librcorrkegl.so.1.1.0
  101. /usr/lib64/librcutp.so.0
  102. /usr/lib64/librcutp.so.1.1.0
  103. /usr/lib64/librdib.so.0
  104. /usr/lib64/librdib.so.1.1.0
  105. /usr/lib64/librfrmt.so.0
  106. /usr/lib64/librfrmt.so.1.1.0
  107. /usr/lib64/librimage.so.0
  108. /usr/lib64/librimage.so.1.1.0
  109. /usr/lib64/librline.so.0
  110. /usr/lib64/librline.so.1.1.0
  111. /usr/lib64/librling.so.0
  112. /usr/lib64/librling.so.1.1.0
  113. /usr/lib64/librlings.so.0
  114. /usr/lib64/librlings.so.1.1.0
  115. /usr/lib64/librmarker.so.0
  116. /usr/lib64/librmarker.so.1.1.0
  117. /usr/lib64/librneg.so.0
  118. /usr/lib64/librneg.so.1.1.0
  119. /usr/lib64/librout.so.0
  120. /usr/lib64/librout.so.1.1.0
  121. /usr/lib64/librpic.so.0
  122. /usr/lib64/librpic.so.1.1.0
  123. /usr/lib64/librpstr.so.0
  124. /usr/lib64/librpstr.so.1.1.0
  125. /usr/lib64/librreccom.so.0
  126. /usr/lib64/librreccom.so.1.1.0
  127. /usr/lib64/librsadd.so.0
  128. /usr/lib64/librsadd.so.1.1.0
  129. /usr/lib64/librselstr.so.0
  130. /usr/lib64/librselstr.so.1.1.0
  131. /usr/lib64/librshelllines.so.0
  132. /usr/lib64/librshelllines.so.1.1.0
  133. /usr/lib64/librstr.so.0
  134. /usr/lib64/librstr.so.1.1.0
  135. /usr/lib64/librstuff.so.0
  136. /usr/lib64/librstuff.so.1.1.0
  137. /usr/lib64/librverline.so.0
  138. /usr/lib64/librverline.so.1.1.0
  139. /usr/lib64/libsmetric.so.0
  140. /usr/lib64/libsmetric.so.1.1.0
  141. /usr/lib64/libstd32.so.0
  142. /usr/lib64/libstd32.so.1.1.0
  143. /usr/share/cuneiform
  144. /usr/share/cuneiform/cube16pd.dat
  145. /usr/share/cuneiform/cube16pl.dat
  146. /usr/share/cuneiform/cube16pr.dat
  147. /usr/share/cuneiform/cube16ps.dat
  148. /usr/share/cuneiform/cube16pt.dat
  149. /usr/share/cuneiform/cubeabde.dat
  150. /usr/share/cuneiform/dc010101.dat
  151. /usr/share/cuneiform/dc0201.dat
  152. /usr/share/cuneiform/dc0202.dat
  153. /usr/share/cuneiform/dc0203.dat
  154. /usr/share/cuneiform/dc0204.dat
  155. /usr/share/cuneiform/dc0205.dat
  156. /usr/share/cuneiform/dc0206.dat
  157. /usr/share/cuneiform/dc1201.dat
  158. /usr/share/cuneiform/dc1203.dat
  159. /usr/share/cuneiform/dc1204.dat
  160. /usr/share/cuneiform/dc2201.dat
  161. /usr/share/cuneiform/dc2203.dat
  162. /usr/share/cuneiform/dc2204.dat
  163. /usr/share/cuneiform/dc_agr.dat
  164. /usr/share/cuneiform/dc_etrd.dat
  165. /usr/share/cuneiform/dc_rtrd.dat
  166. /usr/share/cuneiform/pln_hpd.dat
  167. /usr/share/cuneiform/pln_prc.dat
  168. /usr/share/cuneiform/rec1.dat
  169. /usr/share/cuneiform/rec1blt.dat
  170. /usr/share/cuneiform/rec1cen.dat
  171. /usr/share/cuneiform/rec1n.dat
  172. /usr/share/cuneiform/rec1r&e.dat
  173. /usr/share/cuneiform/rec1rus.dat
  174. /usr/share/cuneiform/rec1tur.dat
  175. /usr/share/cuneiform/rec2.dat
  176. /usr/share/cuneiform/rec2blt.dat
  177. /usr/share/cuneiform/rec2cen.dat
  178. /usr/share/cuneiform/rec2n.dat
  179. /usr/share/cuneiform/rec2r&e.dat
  180. /usr/share/cuneiform/rec2rus.dat
  181. /usr/share/cuneiform/rec2tur.dat
  182. /usr/share/cuneiform/rec3.dat
  183. /usr/share/cuneiform/rec3blt.dat
  184. /usr/share/cuneiform/rec3cen.dat
  185. /usr/share/cuneiform/rec3n.dat
  186. /usr/share/cuneiform/rec3r&e.dat
  187. /usr/share/cuneiform/rec3rus.dat
  188. /usr/share/cuneiform/rec3tur.dat
  189. /usr/share/cuneiform/rec4cour.dat
  190. /usr/share/cuneiform/rec4inc.dat
  191. /usr/share/cuneiform/rec4mtr.dat
  192. /usr/share/cuneiform/rec4r&e.dat
  193. /usr/share/cuneiform/rec6.dat
  194. /usr/share/cuneiform/rec6all.dat
  195. /usr/share/cuneiform/rec6bul.dat
  196. /usr/share/cuneiform/rec6cro.dat
  197. /usr/share/cuneiform/rec6cze.dat
  198. /usr/share/cuneiform/rec6dan.dat
  199. /usr/share/cuneiform/rec6dut.dat
  200. /usr/share/cuneiform/rec6est.dat
  201. /usr/share/cuneiform/rec6frn.dat
  202. /usr/share/cuneiform/rec6grm.dat
  203. /usr/share/cuneiform/rec6hun.dat
  204. /usr/share/cuneiform/rec6ita.dat
  205. /usr/share/cuneiform/rec6lat.dat
  206. /usr/share/cuneiform/rec6lit.dat
  207. /usr/share/cuneiform/rec6pol.dat
  208. /usr/share/cuneiform/rec6por.dat
  209. /usr/share/cuneiform/rec6rom.dat
  210. /usr/share/cuneiform/rec6rus.dat
  211. /usr/share/cuneiform/rec6ser.dat
  212. /usr/share/cuneiform/rec6slo.dat
  213. /usr/share/cuneiform/rec6spa.dat
  214. /usr/share/cuneiform/rec6swe.dat
  215. /usr/share/cuneiform/rec6tur.dat
  216. /usr/share/cuneiform/rec6ukr.dat
  217. /usr/share/cuneiform/rec7.dat
  218. /usr/share/cuneiform/rec7bul.dat
  219. /usr/share/cuneiform/rec7cro.dat
  220. /usr/share/cuneiform/rec7cze.dat
  221. /usr/share/cuneiform/rec7dan.dat
  222. /usr/share/cuneiform/rec7dut.dat
  223. /usr/share/cuneiform/rec7est.dat
  224. /usr/share/cuneiform/rec7frn.dat
  225. /usr/share/cuneiform/rec7grm.dat
  226. /usr/share/cuneiform/rec7hun.dat
  227. /usr/share/cuneiform/rec7ita.dat
  228. /usr/share/cuneiform/rec7lat.dat
  229. /usr/share/cuneiform/rec7lit.dat
  230. /usr/share/cuneiform/rec7pol.dat
  231. /usr/share/cuneiform/rec7por.dat
  232. /usr/share/cuneiform/rec7rom.dat
  233. /usr/share/cuneiform/rec7rus.dat
  234. /usr/share/cuneiform/rec7ser.dat
  235. /usr/share/cuneiform/rec7slo.dat
  236. /usr/share/cuneiform/rec7spa.dat
  237. /usr/share/cuneiform/rec7swe.dat
  238. /usr/share/cuneiform/rec7tur.dat
  239. /usr/share/cuneiform/rec7ukr.dat
  240. /usr/share/cuneiform/rec8.dat
  241. /usr/share/cuneiform/rec8bul.dat
  242. /usr/share/cuneiform/rec8cro.dat
  243. /usr/share/cuneiform/rec8cze.dat
  244. /usr/share/cuneiform/rec8dan.dat
  245. /usr/share/cuneiform/rec8dut.dat
  246. /usr/share/cuneiform/rec8est.dat
  247. /usr/share/cuneiform/rec8frn.dat
  248. /usr/share/cuneiform/rec8grm.dat
  249. /usr/share/cuneiform/rec8hun.dat
  250. /usr/share/cuneiform/rec8ita.dat
  251. /usr/share/cuneiform/rec8lat.dat
  252. /usr/share/cuneiform/rec8lit.dat
  253. /usr/share/cuneiform/rec8pol.dat
  254. /usr/share/cuneiform/rec8por.dat
  255. /usr/share/cuneiform/rec8rom.dat
  256. /usr/share/cuneiform/rec8rus.dat
  257. /usr/share/cuneiform/rec8ser.dat
  258. /usr/share/cuneiform/rec8slo.dat
  259. /usr/share/cuneiform/rec8spa.dat
  260. /usr/share/cuneiform/rec8swe.dat
  261. /usr/share/cuneiform/rec8tur.dat
  262. /usr/share/cuneiform/rec8ukr.dat
  263. /usr/share/cuneiform/rec9.dat
  264. /usr/share/cuneiform/rec9bul.dat
  265. /usr/share/cuneiform/rec9cro.dat
  266. /usr/share/cuneiform/rec9cze.dat
  267. /usr/share/cuneiform/rec9dan.dat
  268. /usr/share/cuneiform/rec9dut.dat
  269. /usr/share/cuneiform/rec9est.dat
  270. /usr/share/cuneiform/rec9frn.dat
  271. /usr/share/cuneiform/rec9grm.dat
  272. /usr/share/cuneiform/rec9hun.dat
  273. /usr/share/cuneiform/rec9ita.dat
  274. /usr/share/cuneiform/rec9lat.dat
  275. /usr/share/cuneiform/rec9lit.dat
  276. /usr/share/cuneiform/rec9pol.dat
  277. /usr/share/cuneiform/rec9por.dat
  278. /usr/share/cuneiform/rec9rom.dat
  279. /usr/share/cuneiform/rec9rus.dat
  280. /usr/share/cuneiform/rec9ser.dat
  281. /usr/share/cuneiform/rec9slo.dat
  282. /usr/share/cuneiform/rec9spa.dat
  283. /usr/share/cuneiform/rec9swe.dat
  284. /usr/share/cuneiform/rec9tur.dat
  285. /usr/share/cuneiform/rec9ukr.dat
  286. /usr/share/cuneiform/vital.dat
  287. /usr/share/cuneiform/viteng.dat
  288. /usr/share/doc/cuneiform-1.1.0
  289. /usr/share/doc/cuneiform-1.1.0/book_1.tif
  290. /usr/share/doc/cuneiform-1.1.0/clip.bmp
  291. /usr/share/doc/cuneiform-1.1.0/clipb.bmp
  292. /usr/share/doc/cuneiform-1.1.0/issues.txt
  293. /usr/share/doc/cuneiform-1.1.0/license.txt
  294. /usr/share/doc/cuneiform-1.1.0/original russian readme.rtf
  295. /usr/share/doc/cuneiform-1.1.0/phototest.tif
  296. /usr/share/doc/cuneiform-1.1.0/phototest.tif.txt
  297. /usr/share/doc/cuneiform-1.1.0/readme.txt
  298. /usr/share/doc/cuneiform-1.1.0/test.bmp
  299. /usr/share/doc/cuneiform-1.1.0/test_output.sh


阅读(2705) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~