python注释语句是啥_求这断python语句的注释

#!/usr/bin/env python

#-*- coding: utf-8 -*-

import os

import sys

import codecs

ORG_ENCODING='CP932'

DEST_ENCODING='CP936'

RES_MARK='\x07'

KEEP_CHARS=''

#KEEP_CHARS='@\\'

BREAK_CMDS=('spfont', 'mov', 'mid', 'add', 'if')

NEW_LINE='\r\n'

LINE_STEP=200

def show_help():

print '%s -d/-e/-D/-E ' %args[0]

sys.exit()

def conv_to_wide_char(text):

fullwide_map = [[]]

def closure(t):

if not fullwide_map[0]:

fullwide_map[0] = [ unichr(65248+i) for i in range(128)]

fullwide_map[0][ord(' ')] = u'\u3000'

keep_chars = KEEP_CHARS

for s in keep_chars:

fullwide_map[0][ord(s)] = s

fullwide_map[0] = ''.join(fullwide_map[0])

return t.translate(fullwide_map[0])

#return t.replace(u'¥', '\\').translate(fullwide_map[0])

return closure(text)

def is_wide_char(c):

return ord(c) >= 128

def parse_line(line):

line = line.strip()

ret_change = ''

res_add = []

cmd = line.split(' ')[0]

if cmd in BREAK_CMDS:

return ret_change, res_add

wide_flag = None

i = 0

while i < len(line):

c = line[i]

if c == ';':

if wide_flag is not None:

res_add.append(line[wide_flag:i])

ret_change += RES_MARK

wide_flag = None

ret_change += line[i:]

break

if is_wide_char(c):

if wide_flag is None:

wide_flag = i

else:

if wide_flag is not None:

res_add.append(line[wide_flag:i])

ret_change += RES_MARK

wide_flag = None

ret_change += c

if c == '"':

i += 1

if i >= len(line):

print line

raise Exception('Unmatched quote!')

j = line.find('"', i)

if j < 0:

print line

raise Exception('Unmatched quote!')

c = line[i]

if is_wide_char(c):

res_add.append(line[i:j])

ret_change += RES_MARK+'"'

else:

ret_change += line[i:j] + '"'

i = j

elif c == ':':

cmd = line[i+1:].lstrip().split(' ')[0]

if cmd in BREAK_CMDS:

ret_change += line[i+1:]

break

i += 1

if wide_flag is not None:

res_add.append(line[wide_flag:])

ret_change += RES_MARK

return ret_change, res_add

def decode(text):

ret = text.splitlines()

res = []

for lno, line in enumerate(ret):

ret_change, res_add = parse_line(line)

if res_add:

ret[lno] = ret_change

res += res_add

'''

stripped_line = line.lstrip()

if stripped_line and ord(stripped_line[0]) >= 128:

# Wide char begins, it's a text line!

line = line.rstrip()

wide_flag = True

start_pos = 0

for i, c in enumerate(line):

if

newpage_flag = False

if line[-1] in ('\\', '/'):

newpage_flag = line[-1]

line = line[:-1]

if '@' not in line:

res.append(line)

ret[lno] = RES_MARK

else:

ret[lno] = ''

pos = line.find('@')

last_pos = 0

while pos >= 0:

res.append(line[last_pos:pos])

if pos > last_pos:

ret[lno] += RES_MARK+'@'

else:

ret[lno] += '@'

last_pos = pos + 1

pos = line.find('@', last_pos)

last_words = line[last_pos:]

if last_words:

res.append(last_words)

ret[lno] += RES_MARK

if newpage_flag:

ret[lno] += newpage_flag

'''

return NEW_LINE.join(ret), res

def encode(text, res):

ret = text.splitlines()

res_flag = 0

for lno in range(len(ret)):

while RES_MARK in ret[lno]:

if res_flag >= len(res):

raise Exception('Res is too short!')

ret[lno] = ret[lno].replace(RES_MARK, conv_to_wide_char(res[res_flag]), 1)

res_flag += 1

return NEW_LINE.join(ret)

def read_file(file_, encoding):

text = ''

try:

rf = codecs.open(file_, 'rb', encoding=encoding)

text = rf.read()

rf.close()

except Exception, e:

print 'Can not read %s: %s' %(file_, e)

sys.exit()

return text

def write_file(file_, text, encoding, errors='strict'):

try:

rf = codecs.open(file_, 'wb', encoding=encoding, errors=errors)

rf.write(text)

rf.close()

except Exception, e:

print 'Can not write %s: %s' %(file_, e)

sys.exit()

__name__ = '__main__'

if __name__ == '__main__':

args = sys.argv

if len(args) != 5:

show_help()

cmd, nsfile, msfile, resname = args[1:5]

if cmd not in ('-d', '-e', '-D', '-E'):

show_help()

if cmd in ('-d', '-D'):

'''decode from NS script file'''

in_text = read_file(nsfile, ORG_ENCODING)

out_text, res = decode(in_text)

if cmd == '-D':

for i, r in enumerate(res):

write_file(os.path.join(resname, '%s.txt' %i), r, ORG_ENCODING)

else:

res = NEW_LINE.join(res)

write_file(resname, res, ORG_ENCODING)

write_file(msfile, out_text, ORG_ENCODING)

else:

#elif cmd in ('-e', '-E'):

'''generate new NS script file'''

res = []

if cmd == '-E':

i = 0

resfile = os.path.join(resname, '%s.txt' %i)

while os.path.isfile(resfile):

r = read_file(resfile, DEST_ENCODING)

res.append(''.join(r.splitlines()))

i += 1

resfile = os.path.join(resname, '%s.txt' %i)

else:

r = read_file(resname, DEST_ENCODING)

#res = r.splitlines()

res = r.split(NEW_LINE)

in_text = read_file(msfile, ORG_ENCODING)

out_text = encode(in_text, res)

write_file(nsfile, out_text, DEST_ENCODING, 'ignore')

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值