Linux ip-148-66-134-25.ip.secureserver.net 3.10.0-1160.119.1.el7.tuxcare.els10.x86_64 #1 SMP Fri Oct 11 21:40:41 UTC 2024 x86_64
Apache
: 148.66.134.25 | : 3.16.135.226
66 Domain
8.0.30
amvm
www.github.com/MadExploits
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
UNLOCK SHELL
HASH IDENTIFIER
CPANEL RESET
BLACK DEFEND!
README
+ Create Folder
+ Create File
/
usr /
lib64 /
python2.7 /
Tools /
scripts /
[ HOME SHELL ]
Name
Size
Permission
Action
analyze_dxp.py
4.11
KB
-rwxr-xr-x
analyze_dxp.pyc
4.64
KB
-rw-r--r--
analyze_dxp.pyo
4.64
KB
-rw-r--r--
byext.py
3.85
KB
-rwxr-xr-x
byext.pyc
4.42
KB
-rw-r--r--
byext.pyo
4.42
KB
-rw-r--r--
byteyears.py
1.6
KB
-rwxr-xr-x
byteyears.pyc
1.37
KB
-rw-r--r--
byteyears.pyo
1.37
KB
-rw-r--r--
checkappend.py
4.55
KB
-rwxr-xr-x
checkappend.pyc
4.77
KB
-rw-r--r--
checkappend.pyo
4.77
KB
-rw-r--r--
checkpyc.py
1.96
KB
-rwxr-xr-x
checkpyc.pyc
1.93
KB
-rw-r--r--
checkpyc.pyo
1.93
KB
-rw-r--r--
classfix.py
5.81
KB
-rwxr-xr-x
classfix.pyc
4.09
KB
-rw-r--r--
classfix.pyo
4.09
KB
-rw-r--r--
cleanfuture.py
8.38
KB
-rwxr-xr-x
cleanfuture.pyc
7.22
KB
-rw-r--r--
cleanfuture.pyo
7.19
KB
-rw-r--r--
combinerefs.py
4.28
KB
-rwxr-xr-x
combinerefs.pyc
4.16
KB
-rw-r--r--
combinerefs.pyo
4.12
KB
-rw-r--r--
copytime.py
664
B
-rwxr-xr-x
copytime.pyc
937
B
-rw-r--r--
copytime.pyo
937
B
-rw-r--r--
crlf.py
611
B
-rwxr-xr-x
crlf.pyc
855
B
-rw-r--r--
crlf.pyo
855
B
-rw-r--r--
cvsfiles.py
1.75
KB
-rwxr-xr-x
cvsfiles.pyc
2.11
KB
-rw-r--r--
cvsfiles.pyo
2.11
KB
-rw-r--r--
db2pickle.py
3.49
KB
-rwxr-xr-x
db2pickle.pyc
3.42
KB
-rw-r--r--
db2pickle.pyo
3.42
KB
-rw-r--r--
diff.py
1.98
KB
-rwxr-xr-x
diff.pyc
2.29
KB
-rw-r--r--
diff.pyo
2.29
KB
-rw-r--r--
dutree.py
1.58
KB
-rwxr-xr-x
dutree.pyc
2.18
KB
-rw-r--r--
dutree.pyo
2.18
KB
-rw-r--r--
eptags.py
1.45
KB
-rwxr-xr-x
eptags.pyc
1.83
KB
-rw-r--r--
eptags.pyo
1.83
KB
-rw-r--r--
find_recursionlimit.py
3.39
KB
-rwxr-xr-x
find_recursionlimit.pyc
5.54
KB
-rw-r--r--
find_recursionlimit.pyo
5.54
KB
-rw-r--r--
finddiv.py
2.46
KB
-rwxr-xr-x
finddiv.pyc
3.22
KB
-rw-r--r--
finddiv.pyo
3.22
KB
-rw-r--r--
findlinksto.py
1.04
KB
-rwxr-xr-x
findlinksto.pyc
1.39
KB
-rw-r--r--
findlinksto.pyo
1.39
KB
-rw-r--r--
findnocoding.py
2.64
KB
-rwxr-xr-x
findnocoding.pyc
3.03
KB
-rw-r--r--
findnocoding.pyo
3.03
KB
-rw-r--r--
fixcid.py
9.75
KB
-rwxr-xr-x
fixcid.pyc
7.67
KB
-rw-r--r--
fixcid.pyo
7.67
KB
-rw-r--r--
fixdiv.py
13.57
KB
-rwxr-xr-x
fixdiv.pyc
13.7
KB
-rw-r--r--
fixdiv.pyo
13.62
KB
-rw-r--r--
fixheader.py
1.16
KB
-rwxr-xr-x
fixheader.pyc
1.44
KB
-rw-r--r--
fixheader.pyo
1.44
KB
-rw-r--r--
fixnotice.py
2.98
KB
-rwxr-xr-x
fixnotice.pyc
3.42
KB
-rw-r--r--
fixnotice.pyo
3.42
KB
-rw-r--r--
fixps.py
894
B
-rwxr-xr-x
fixps.pyc
969
B
-rw-r--r--
fixps.pyo
969
B
-rw-r--r--
ftpmirror.py
12.55
KB
-rwxr-xr-x
ftpmirror.pyc
10.81
KB
-rw-r--r--
ftpmirror.pyo
10.81
KB
-rw-r--r--
google.py
520
B
-rwxr-xr-x
google.pyc
792
B
-rw-r--r--
google.pyo
792
B
-rw-r--r--
gprof2html.py
2.12
KB
-rwxr-xr-x
gprof2html.pyc
2.22
KB
-rw-r--r--
gprof2html.pyo
2.22
KB
-rw-r--r--
h2py.py
5.82
KB
-rwxr-xr-x
h2py.pyc
4.3
KB
-rw-r--r--
h2py.pyo
4.3
KB
-rw-r--r--
hotshotmain.py
1.45
KB
-rwxr-xr-x
hotshotmain.pyc
1.82
KB
-rw-r--r--
hotshotmain.pyo
1.82
KB
-rw-r--r--
ifdef.py
3.63
KB
-rwxr-xr-x
ifdef.pyc
2.21
KB
-rw-r--r--
ifdef.pyo
2.21
KB
-rw-r--r--
lfcr.py
619
B
-rwxr-xr-x
lfcr.pyc
880
B
-rw-r--r--
lfcr.pyo
880
B
-rw-r--r--
linktree.py
2.37
KB
-rwxr-xr-x
linktree.pyc
1.98
KB
-rw-r--r--
linktree.pyo
1.98
KB
-rw-r--r--
lll.py
747
B
-rwxr-xr-x
lll.pyc
947
B
-rw-r--r--
lll.pyo
947
B
-rw-r--r--
logmerge.py
5.45
KB
-rwxr-xr-x
logmerge.pyc
4.96
KB
-rw-r--r--
logmerge.pyo
4.96
KB
-rw-r--r--
mailerdaemon.py
7.76
KB
-rwxr-xr-x
mailerdaemon.pyc
7.19
KB
-rw-r--r--
mailerdaemon.pyo
7.19
KB
-rw-r--r--
md5sum.py
2.33
KB
-rwxr-xr-x
md5sum.pyc
2.85
KB
-rw-r--r--
md5sum.pyo
2.85
KB
-rw-r--r--
methfix.py
5.33
KB
-rwxr-xr-x
methfix.pyc
4.03
KB
-rw-r--r--
methfix.pyo
4.03
KB
-rw-r--r--
mkreal.py
1.59
KB
-rwxr-xr-x
mkreal.pyc
1.93
KB
-rw-r--r--
mkreal.pyo
1.93
KB
-rw-r--r--
ndiff.py
3.72
KB
-rwxr-xr-x
ndiff.pyc
3.77
KB
-rw-r--r--
ndiff.pyo
3.77
KB
-rw-r--r--
nm2def.py
2.39
KB
-rwxr-xr-x
nm2def.pyc
2.89
KB
-rw-r--r--
nm2def.pyo
2.89
KB
-rw-r--r--
objgraph.py
5.88
KB
-rwxr-xr-x
objgraph.pyc
4.82
KB
-rw-r--r--
objgraph.pyo
4.82
KB
-rw-r--r--
parseentities.py
1.68
KB
-rwxr-xr-x
parseentities.pyc
2.03
KB
-rw-r--r--
parseentities.pyo
2.03
KB
-rw-r--r--
patchcheck.py
5.42
KB
-rwxr-xr-x
patchcheck.pyc
7.24
KB
-rw-r--r--
patchcheck.pyo
7.24
KB
-rw-r--r--
pathfix.py
4.23
KB
-rwxr-xr-x
pathfix.pyc
3.75
KB
-rw-r--r--
pathfix.pyo
3.75
KB
-rw-r--r--
pdeps.py
3.84
KB
-rwxr-xr-x
pdeps.pyc
3.14
KB
-rw-r--r--
pdeps.pyo
3.14
KB
-rw-r--r--
pickle2db.py
3.85
KB
-rwxr-xr-x
pickle2db.pyc
3.73
KB
-rw-r--r--
pickle2db.pyo
3.73
KB
-rw-r--r--
pindent.py
16.77
KB
-rwxr-xr-x
pindent.pyc
11.3
KB
-rw-r--r--
pindent.pyo
11.3
KB
-rw-r--r--
ptags.py
1.2
KB
-rwxr-xr-x
ptags.pyc
1.37
KB
-rw-r--r--
ptags.pyo
1.37
KB
-rw-r--r--
pysource.py
3.76
KB
-rwxr-xr-x
pysource.pyc
3.92
KB
-rw-r--r--
pysource.pyo
3.92
KB
-rw-r--r--
redemo.py
5.66
KB
-rwxr-xr-x
redemo.pyc
5.16
KB
-rw-r--r--
redemo.pyo
5.16
KB
-rw-r--r--
reindent-rst.py
278
B
-rwxr-xr-x
reindent-rst.pyc
481
B
-rw-r--r--
reindent-rst.pyo
481
B
-rw-r--r--
reindent.py
10.58
KB
-rwxr-xr-x
reindent.pyc
8.77
KB
-rw-r--r--
reindent.pyo
8.74
KB
-rw-r--r--
rgrep.py
1.46
KB
-rwxr-xr-x
rgrep.pyc
1.84
KB
-rw-r--r--
rgrep.pyo
1.84
KB
-rw-r--r--
serve.py
1.12
KB
-rwxr-xr-x
serve.pyc
1.56
KB
-rw-r--r--
serve.pyo
1.56
KB
-rw-r--r--
setup.py
421
B
-rwxr-xr-x
setup.pyc
548
B
-rw-r--r--
setup.pyo
548
B
-rw-r--r--
suff.py
622
B
-rwxr-xr-x
suff.pyc
904
B
-rw-r--r--
suff.pyo
904
B
-rw-r--r--
svneol.py
2.86
KB
-rwxr-xr-x
svneol.pyc
2.83
KB
-rw-r--r--
svneol.pyo
2.76
KB
-rw-r--r--
texcheck.py
9.04
KB
-rwxr-xr-x
texcheck.pyc
8.18
KB
-rw-r--r--
texcheck.pyo
8.18
KB
-rw-r--r--
texi2html.py
68.19
KB
-rwxr-xr-x
texi2html.pyc
81.37
KB
-rw-r--r--
texi2html.pyo
81.37
KB
-rw-r--r--
treesync.py
5.65
KB
-rwxr-xr-x
treesync.pyc
5.85
KB
-rw-r--r--
treesync.pyo
5.85
KB
-rw-r--r--
untabify.py
1.19
KB
-rwxr-xr-x
untabify.pyc
1.55
KB
-rw-r--r--
untabify.pyo
1.55
KB
-rw-r--r--
which.py
1.59
KB
-rwxr-xr-x
which.pyc
1.59
KB
-rw-r--r--
which.pyo
1.59
KB
-rw-r--r--
win_add2path.py
1.58
KB
-rwxr-xr-x
win_add2path.pyc
2.02
KB
-rw-r--r--
win_add2path.pyo
2.02
KB
-rw-r--r--
xxci.py
2.73
KB
-rwxr-xr-x
xxci.pyc
3.93
KB
-rw-r--r--
xxci.pyo
3.93
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : pindent.py
#! /usr/bin/env python # This file contains a class and a main program that perform three # related (though complimentary) formatting operations on Python # programs. When called as "pindent -c", it takes a valid Python # program as input and outputs a version augmented with block-closing # comments. When called as "pindent -d", it assumes its input is a # Python program with block-closing comments and outputs a commentless # version. When called as "pindent -r" it assumes its input is a # Python program with block-closing comments but with its indentation # messed up, and outputs a properly indented version. # A "block-closing comment" is a comment of the form '# end <keyword>' # where <keyword> is the keyword that opened the block. If the # opening keyword is 'def' or 'class', the function or class name may # be repeated in the block-closing comment as well. Here is an # example of a program fully augmented with block-closing comments: # def foobar(a, b): # if a == b: # a = a+1 # elif a < b: # b = b-1 # if b > a: a = a-1 # # end if # else: # print 'oops!' # # end if # # end def foobar # Note that only the last part of an if...elif...else... block needs a # block-closing comment; the same is true for other compound # statements (e.g. try...except). Also note that "short-form" blocks # like the second 'if' in the example must be closed as well; # otherwise the 'else' in the example would be ambiguous (remember # that indentation is not significant when interpreting block-closing # comments). # The operations are idempotent (i.e. applied to their own output # they yield an identical result). Running first "pindent -c" and # then "pindent -r" on a valid Python program produces a program that # is semantically identical to the input (though its indentation may # be different). Running "pindent -e" on that output produces a # program that only differs from the original in indentation. # Other options: # -s stepsize: set the indentation step size (default 8) # -t tabsize : set the number of spaces a tab character is worth (default 8) # -e : expand TABs into spaces # file ... : input file(s) (default standard input) # The results always go to standard output # Caveats: # - comments ending in a backslash will be mistaken for continued lines # - continuations using backslash are always left unchanged # - continuations inside parentheses are not extra indented by -r # but must be indented for -c to work correctly (this breaks # idempotency!) # - continued lines inside triple-quoted strings are totally garbled # Secret feature: # - On input, a block may also be closed with an "end statement" -- # this is a block-closing comment without the '#' sign. # Possible improvements: # - check syntax based on transitions in 'next' table # - better error reporting # - better error recovery # - check identifier after class/def # The following wishes need a more complete tokenization of the source: # - Don't get fooled by comments ending in backslash # - reindent continuation lines indicated by backslash # - handle continuation lines inside parentheses/braces/brackets # - handle triple quoted strings spanning lines # - realign comments # - optionally do much more thorough reformatting, a la C indent from __future__ import print_function # Defaults STEPSIZE = 8 TABSIZE = 8 EXPANDTABS = False import io import re import sys next = {} next['if'] = next['elif'] = 'elif', 'else', 'end' next['while'] = next['for'] = 'else', 'end' next['try'] = 'except', 'finally' next['except'] = 'except', 'else', 'finally', 'end' next['else'] = next['finally'] = next['with'] = \ next['def'] = next['class'] = 'end' next['end'] = () start = 'if', 'while', 'for', 'try', 'with', 'def', 'class' class PythonIndenter: def __init__(self, fpi = sys.stdin, fpo = sys.stdout, indentsize = STEPSIZE, tabsize = TABSIZE, expandtabs = EXPANDTABS): self.fpi = fpi self.fpo = fpo self.indentsize = indentsize self.tabsize = tabsize self.lineno = 0 self.expandtabs = expandtabs self._write = fpo.write self.kwprog = re.compile( r'^(?:\s|\\\n)*(?P<kw>[a-z]+)' r'((?:\s|\\\n)+(?P<id>[a-zA-Z_]\w*))?' r'[^\w]') self.endprog = re.compile( r'^(?:\s|\\\n)*#?\s*end\s+(?P<kw>[a-z]+)' r'(\s+(?P<id>[a-zA-Z_]\w*))?' r'[^\w]') self.wsprog = re.compile(r'^[ \t]*') # end def __init__ def write(self, line): if self.expandtabs: self._write(line.expandtabs(self.tabsize)) else: self._write(line) # end if # end def write def readline(self): line = self.fpi.readline() if line: self.lineno += 1 # end if return line # end def readline def error(self, fmt, *args): if args: fmt = fmt % args # end if sys.stderr.write('Error at line %d: %s\n' % (self.lineno, fmt)) self.write('### %s ###\n' % fmt) # end def error def getline(self): line = self.readline() while line[-2:] == '\\\n': line2 = self.readline() if not line2: break # end if line += line2 # end while return line # end def getline def putline(self, line, indent): tabs, spaces = divmod(indent*self.indentsize, self.tabsize) i = self.wsprog.match(line).end() line = line[i:] if line[:1] not in ('\n', '\r', ''): line = '\t'*tabs + ' '*spaces + line # end if self.write(line) # end def putline def reformat(self): stack = [] while True: line = self.getline() if not line: break # EOF # end if m = self.endprog.match(line) if m: kw = 'end' kw2 = m.group('kw') if not stack: self.error('unexpected end') elif stack.pop()[0] != kw2: self.error('unmatched end') # end if self.putline(line, len(stack)) continue # end if m = self.kwprog.match(line) if m: kw = m.group('kw') if kw in start: self.putline(line, len(stack)) stack.append((kw, kw)) continue # end if if next.has_key(kw) and stack: self.putline(line, len(stack)-1) kwa, kwb = stack[-1] stack[-1] = kwa, kw continue # end if # end if self.putline(line, len(stack)) # end while if stack: self.error('unterminated keywords') for kwa, kwb in stack: self.write('\t%s\n' % kwa) # end for # end if # end def reformat def delete(self): begin_counter = 0 end_counter = 0 while True: line = self.getline() if not line: break # EOF # end if m = self.endprog.match(line) if m: end_counter += 1 continue # end if m = self.kwprog.match(line) if m: kw = m.group('kw') if kw in start: begin_counter += 1 # end if # end if self.write(line) # end while if begin_counter - end_counter < 0: sys.stderr.write('Warning: input contained more end tags than expected\n') elif begin_counter - end_counter > 0: sys.stderr.write('Warning: input contained less end tags than expected\n') # end if # end def delete def complete(self): stack = [] todo = [] currentws = thisid = firstkw = lastkw = topid = '' while True: line = self.getline() i = self.wsprog.match(line).end() m = self.endprog.match(line) if m: thiskw = 'end' endkw = m.group('kw') thisid = m.group('id') else: m = self.kwprog.match(line) if m: thiskw = m.group('kw') if not next.has_key(thiskw): thiskw = '' # end if if thiskw in ('def', 'class'): thisid = m.group('id') else: thisid = '' # end if elif line[i:i+1] in ('\n', '#'): todo.append(line) continue else: thiskw = '' # end if # end if indentws = line[:i] indent = len(indentws.expandtabs(self.tabsize)) current = len(currentws.expandtabs(self.tabsize)) while indent < current: if firstkw: if topid: s = '# end %s %s\n' % ( firstkw, topid) else: s = '# end %s\n' % firstkw # end if self.write(currentws + s) firstkw = lastkw = '' # end if currentws, firstkw, lastkw, topid = stack.pop() current = len(currentws.expandtabs(self.tabsize)) # end while if indent == current and firstkw: if thiskw == 'end': if endkw != firstkw: self.error('mismatched end') # end if firstkw = lastkw = '' elif not thiskw or thiskw in start: if topid: s = '# end %s %s\n' % ( firstkw, topid) else: s = '# end %s\n' % firstkw # end if self.write(currentws + s) firstkw = lastkw = topid = '' # end if # end if if indent > current: stack.append((currentws, firstkw, lastkw, topid)) if thiskw and thiskw not in start: # error thiskw = '' # end if currentws, firstkw, lastkw, topid = \ indentws, thiskw, thiskw, thisid # end if if thiskw: if thiskw in start: firstkw = lastkw = thiskw topid = thisid else: lastkw = thiskw # end if # end if for l in todo: self.write(l) # end for todo = [] if not line: break # end if self.write(line) # end while # end def complete # end class PythonIndenter # Simplified user interface # - xxx_filter(input, output): read and write file objects # - xxx_string(s): take and return string object # - xxx_file(filename): process file in place, return true iff changed def complete_filter(input = sys.stdin, output = sys.stdout, stepsize = STEPSIZE, tabsize = TABSIZE, expandtabs = EXPANDTABS): pi = PythonIndenter(input, output, stepsize, tabsize, expandtabs) pi.complete() # end def complete_filter def delete_filter(input= sys.stdin, output = sys.stdout, stepsize = STEPSIZE, tabsize = TABSIZE, expandtabs = EXPANDTABS): pi = PythonIndenter(input, output, stepsize, tabsize, expandtabs) pi.delete() # end def delete_filter def reformat_filter(input = sys.stdin, output = sys.stdout, stepsize = STEPSIZE, tabsize = TABSIZE, expandtabs = EXPANDTABS): pi = PythonIndenter(input, output, stepsize, tabsize, expandtabs) pi.reformat() # end def reformat_filter def complete_string(source, stepsize = STEPSIZE, tabsize = TABSIZE, expandtabs = EXPANDTABS): input = io.BytesIO(source) output = io.BytesIO() pi = PythonIndenter(input, output, stepsize, tabsize, expandtabs) pi.complete() return output.getvalue() # end def complete_string def delete_string(source, stepsize = STEPSIZE, tabsize = TABSIZE, expandtabs = EXPANDTABS): input = io.BytesIO(source) output = io.BytesIO() pi = PythonIndenter(input, output, stepsize, tabsize, expandtabs) pi.delete() return output.getvalue() # end def delete_string def reformat_string(source, stepsize = STEPSIZE, tabsize = TABSIZE, expandtabs = EXPANDTABS): input = io.BytesIO(source) output = io.BytesIO() pi = PythonIndenter(input, output, stepsize, tabsize, expandtabs) pi.reformat() return output.getvalue() # end def reformat_string def make_backup(filename): import os, os.path backup = filename + '~' if os.path.lexists(backup): try: os.remove(backup) except os.error: print("Can't remove backup %r" % (backup,), file=sys.stderr) # end try # end if try: os.rename(filename, backup) except os.error: print("Can't rename %r to %r" % (filename, backup), file=sys.stderr) # end try # end def make_backup def complete_file(filename, stepsize = STEPSIZE, tabsize = TABSIZE, expandtabs = EXPANDTABS): with open(filename, 'r') as f: source = f.read() # end with result = complete_string(source, stepsize, tabsize, expandtabs) if source == result: return 0 # end if make_backup(filename) with open(filename, 'w') as f: f.write(result) # end with return 1 # end def complete_file def delete_file(filename, stepsize = STEPSIZE, tabsize = TABSIZE, expandtabs = EXPANDTABS): with open(filename, 'r') as f: source = f.read() # end with result = delete_string(source, stepsize, tabsize, expandtabs) if source == result: return 0 # end if make_backup(filename) with open(filename, 'w') as f: f.write(result) # end with return 1 # end def delete_file def reformat_file(filename, stepsize = STEPSIZE, tabsize = TABSIZE, expandtabs = EXPANDTABS): with open(filename, 'r') as f: source = f.read() # end with result = reformat_string(source, stepsize, tabsize, expandtabs) if source == result: return 0 # end if make_backup(filename) with open(filename, 'w') as f: f.write(result) # end with return 1 # end def reformat_file # Test program when called as a script usage = """ usage: pindent (-c|-d|-r) [-s stepsize] [-t tabsize] [-e] [file] ... -c : complete a correctly indented program (add #end directives) -d : delete #end directives -r : reformat a completed program (use #end directives) -s stepsize: indentation step (default %(STEPSIZE)d) -t tabsize : the worth in spaces of a tab (default %(TABSIZE)d) -e : expand TABs into spaces (default OFF) [file] ... : files are changed in place, with backups in file~ If no files are specified or a single - is given, the program acts as a filter (reads stdin, writes stdout). """ % vars() def error_both(op1, op2): sys.stderr.write('Error: You can not specify both '+op1+' and -'+op2[0]+' at the same time\n') sys.stderr.write(usage) sys.exit(2) # end def error_both def test(): import getopt try: opts, args = getopt.getopt(sys.argv[1:], 'cdrs:t:e') except getopt.error, msg: sys.stderr.write('Error: %s\n' % msg) sys.stderr.write(usage) sys.exit(2) # end try action = None stepsize = STEPSIZE tabsize = TABSIZE expandtabs = EXPANDTABS for o, a in opts: if o == '-c': if action: error_both(o, action) # end if action = 'complete' elif o == '-d': if action: error_both(o, action) # end if action = 'delete' elif o == '-r': if action: error_both(o, action) # end if action = 'reformat' elif o == '-s': stepsize = int(a) elif o == '-t': tabsize = int(a) elif o == '-e': expandtabs = True # end if # end for if not action: sys.stderr.write( 'You must specify -c(omplete), -d(elete) or -r(eformat)\n') sys.stderr.write(usage) sys.exit(2) # end if if not args or args == ['-']: action = eval(action + '_filter') action(sys.stdin, sys.stdout, stepsize, tabsize, expandtabs) else: action = eval(action + '_file') for filename in args: action(filename, stepsize, tabsize, expandtabs) # end for # end if # end def test if __name__ == '__main__': test() # end if
Close