Linux cpanel.rrshost.in 5.15.0-25-generic #25-Ubuntu SMP Wed Mar 30 15:54:22 UTC 2022 x86_64
Apache
: 109.123.238.221 | : 172.70.127.175
138 Domain
8.2.28
aev999
Terminal
AUTO ROOT
Adminer
Backdoor Destroyer
Linux Exploit
Lock Shell
Lock File
Create User
CREATE RDP
PHP Mailer
BACKCONNECT
HASH IDENTIFIER
README
+ Create Folder
+ Create File
/
usr /
lib /
python2.7 /
[ HOME SHELL ]
Name
Size
Permission
Action
bsddb
[ DIR ]
drwxr-xr-x
compiler
[ DIR ]
drwxr-xr-x
config-x86_64-linux-gnu
[ DIR ]
drwxr-xr-x
ctypes
[ DIR ]
drwxr-xr-x
curses
[ DIR ]
drwxr-xr-x
dist-packages
[ DIR ]
drwxr-xr-x
distutils
[ DIR ]
drwxr-xr-x
email
[ DIR ]
drwxr-xr-x
encodings
[ DIR ]
drwxr-xr-x
ensurepip
[ DIR ]
drwxr-xr-x
hotshot
[ DIR ]
drwxr-xr-x
importlib
[ DIR ]
drwxr-xr-x
json
[ DIR ]
drwxr-xr-x
lib-dynload
[ DIR ]
drwxr-xr-x
lib-tk
[ DIR ]
drwxr-xr-x
lib2to3
[ DIR ]
drwxr-xr-x
logging
[ DIR ]
drwxr-xr-x
multiprocessing
[ DIR ]
drwxr-xr-x
plat-x86_64-linux-gnu
[ DIR ]
drwxr-xr-x
pydoc_data
[ DIR ]
drwxr-xr-x
sqlite3
[ DIR ]
drwxr-xr-x
test
[ DIR ]
drwxr-xr-x
unittest
[ DIR ]
drwxr-xr-x
wsgiref
[ DIR ]
drwxr-xr-x
xml
[ DIR ]
drwxr-xr-x
BaseHTTPServer.py
22.21
KB
-rw-r--r--
BaseHTTPServer.pyc
21.17
KB
-rw-r--r--
Bastion.py
5.61
KB
-rw-r--r--
Bastion.pyc
6.47
KB
-rw-r--r--
CGIHTTPServer.py
12.78
KB
-rw-r--r--
CGIHTTPServer.pyc
10.73
KB
-rw-r--r--
ConfigParser.py
27.1
KB
-rw-r--r--
ConfigParser.pyc
24.51
KB
-rw-r--r--
Cookie.py
25.92
KB
-rw-r--r--
Cookie.pyc
22.05
KB
-rw-r--r--
DocXMLRPCServer.py
10.52
KB
-rw-r--r--
DocXMLRPCServer.pyc
9.92
KB
-rw-r--r--
HTMLParser.py
16.77
KB
-rw-r--r--
HTMLParser.pyc
13.34
KB
-rw-r--r--
LICENSE.txt
12.48
KB
-rw-r--r--
MimeWriter.py
6.33
KB
-rw-r--r--
MimeWriter.pyc
7.17
KB
-rw-r--r--
Queue.py
8.38
KB
-rw-r--r--
Queue.pyc
9.15
KB
-rw-r--r--
SimpleHTTPServer.py
7.81
KB
-rw-r--r--
SimpleHTTPServer.pyc
7.8
KB
-rw-r--r--
SimpleXMLRPCServer.py
25.21
KB
-rw-r--r--
SimpleXMLRPCServer.pyc
22.26
KB
-rw-r--r--
SocketServer.py
23.39
KB
-rw-r--r--
SocketServer.pyc
23.41
KB
-rw-r--r--
StringIO.py
10.41
KB
-rw-r--r--
StringIO.pyc
11.17
KB
-rw-r--r--
UserDict.py
6.89
KB
-rw-r--r--
UserDict.pyc
9.4
KB
-rw-r--r--
UserList.py
3.56
KB
-rw-r--r--
UserList.pyc
6.36
KB
-rw-r--r--
UserString.py
9.46
KB
-rwxr-xr-x
UserString.pyc
14.38
KB
-rw-r--r--
_LWPCookieJar.py
6.4
KB
-rw-r--r--
_LWPCookieJar.pyc
5.29
KB
-rw-r--r--
_MozillaCookieJar.py
5.66
KB
-rw-r--r--
_MozillaCookieJar.pyc
4.35
KB
-rw-r--r--
__future__.py
4.28
KB
-rw-r--r--
__future__.pyc
4.11
KB
-rw-r--r--
__phello__.foo.py
64
B
-rw-r--r--
__phello__.foo.pyc
123
B
-rw-r--r--
_abcoll.py
18.18
KB
-rw-r--r--
_abcoll.pyc
24.88
KB
-rw-r--r--
_osx_support.py
18.65
KB
-rw-r--r--
_osx_support.pyc
11.45
KB
-rw-r--r--
_pyio.py
68
KB
-rw-r--r--
_pyio.pyc
62.84
KB
-rw-r--r--
_strptime.py
20.24
KB
-rw-r--r--
_strptime.pyc
14.78
KB
-rw-r--r--
_sysconfigdata.py
126
B
-rw-r--r--
_sysconfigdata.pyc
279
B
-rw-r--r--
_threading_local.py
7.09
KB
-rw-r--r--
_threading_local.pyc
6.21
KB
-rw-r--r--
_weakrefset.py
5.77
KB
-rw-r--r--
_weakrefset.pyc
9.36
KB
-rw-r--r--
abc.py
6.98
KB
-rw-r--r--
abc.pyc
5.98
KB
-rw-r--r--
aifc.py
33.77
KB
-rw-r--r--
aifc.pyc
29.6
KB
-rw-r--r--
antigravity.py
60
B
-rw-r--r--
antigravity.pyc
201
B
-rw-r--r--
anydbm.py
2.6
KB
-rw-r--r--
anydbm.pyc
2.73
KB
-rw-r--r--
argparse.egg-info
217
B
-rw-r--r--
argparse.py
87.14
KB
-rw-r--r--
argparse.pyc
62.56
KB
-rw-r--r--
ast.py
11.53
KB
-rw-r--r--
ast.pyc
12.59
KB
-rw-r--r--
asynchat.py
11.31
KB
-rw-r--r--
asynchat.pyc
8.54
KB
-rw-r--r--
asyncore.py
20.45
KB
-rw-r--r--
asyncore.pyc
18.33
KB
-rw-r--r--
atexit.py
1.67
KB
-rw-r--r--
atexit.pyc
2.14
KB
-rw-r--r--
audiodev.py
7.42
KB
-rw-r--r--
audiodev.pyc
8.22
KB
-rw-r--r--
base64.py
11.53
KB
-rwxr-xr-x
base64.pyc
11
KB
-rw-r--r--
bdb.py
21.21
KB
-rw-r--r--
bdb.pyc
18.53
KB
-rw-r--r--
binhex.py
14.35
KB
-rw-r--r--
binhex.pyc
15
KB
-rw-r--r--
bisect.py
2.53
KB
-rw-r--r--
bisect.pyc
2.99
KB
-rw-r--r--
cProfile.py
6.42
KB
-rwxr-xr-x
cProfile.pyc
6.22
KB
-rw-r--r--
calendar.py
22.84
KB
-rw-r--r--
calendar.pyc
27.1
KB
-rw-r--r--
cgi.py
34.96
KB
-rwxr-xr-x
cgi.pyc
32.21
KB
-rw-r--r--
cgitb.py
11.89
KB
-rw-r--r--
cgitb.pyc
11.82
KB
-rw-r--r--
chunk.py
5.29
KB
-rw-r--r--
chunk.pyc
5.45
KB
-rw-r--r--
cmd.py
14.67
KB
-rw-r--r--
cmd.pyc
13.67
KB
-rw-r--r--
code.py
9.95
KB
-rw-r--r--
code.pyc
10.06
KB
-rw-r--r--
codecs.py
35.3
KB
-rw-r--r--
codecs.pyc
35.78
KB
-rw-r--r--
codeop.py
5.86
KB
-rw-r--r--
codeop.pyc
6.42
KB
-rw-r--r--
collections.py
27.15
KB
-rw-r--r--
collections.pyc
25.45
KB
-rw-r--r--
colorsys.py
3.6
KB
-rw-r--r--
colorsys.pyc
3.88
KB
-rw-r--r--
commands.py
2.49
KB
-rw-r--r--
commands.pyc
2.4
KB
-rw-r--r--
compileall.py
7.58
KB
-rw-r--r--
compileall.pyc
6.84
KB
-rw-r--r--
contextlib.py
4.32
KB
-rw-r--r--
contextlib.pyc
4.33
KB
-rw-r--r--
cookielib.py
63.95
KB
-rw-r--r--
cookielib.pyc
53.25
KB
-rw-r--r--
copy.py
11.26
KB
-rw-r--r--
copy.pyc
11.83
KB
-rw-r--r--
copy_reg.py
6.81
KB
-rw-r--r--
copy_reg.pyc
5.02
KB
-rw-r--r--
csv.py
16.32
KB
-rw-r--r--
csv.pyc
13.13
KB
-rw-r--r--
dbhash.py
498
B
-rw-r--r--
dbhash.pyc
714
B
-rw-r--r--
decimal.py
216.73
KB
-rw-r--r--
decimal.pyc
167.62
KB
-rw-r--r--
difflib.py
80.4
KB
-rw-r--r--
difflib.pyc
60.34
KB
-rw-r--r--
dircache.py
1.1
KB
-rw-r--r--
dircache.pyc
1.53
KB
-rw-r--r--
dis.py
6.35
KB
-rw-r--r--
dis.pyc
6.07
KB
-rw-r--r--
doctest.py
102.63
KB
-rw-r--r--
doctest.pyc
81.44
KB
-rw-r--r--
dumbdbm.py
8.93
KB
-rw-r--r--
dumbdbm.pyc
6.55
KB
-rw-r--r--
dummy_thread.py
4.31
KB
-rw-r--r--
dummy_thread.pyc
5.24
KB
-rw-r--r--
dummy_threading.py
2.74
KB
-rw-r--r--
dummy_threading.pyc
1.25
KB
-rw-r--r--
filecmp.py
9.36
KB
-rw-r--r--
filecmp.pyc
9.36
KB
-rw-r--r--
fileinput.py
13.42
KB
-rw-r--r--
fileinput.pyc
14.1
KB
-rw-r--r--
fnmatch.py
3.24
KB
-rw-r--r--
fnmatch.pyc
3.52
KB
-rw-r--r--
formatter.py
14.56
KB
-rw-r--r--
formatter.pyc
18.58
KB
-rw-r--r--
fpformat.py
4.62
KB
-rw-r--r--
fpformat.pyc
4.58
KB
-rw-r--r--
fractions.py
21.87
KB
-rw-r--r--
fractions.pyc
19.17
KB
-rw-r--r--
ftplib.py
37.3
KB
-rw-r--r--
ftplib.pyc
33.81
KB
-rw-r--r--
functools.py
4.69
KB
-rw-r--r--
functools.pyc
6.42
KB
-rw-r--r--
genericpath.py
3.13
KB
-rw-r--r--
genericpath.pyc
3.41
KB
-rw-r--r--
getopt.py
7.15
KB
-rw-r--r--
getopt.pyc
6.48
KB
-rw-r--r--
getpass.py
5.43
KB
-rw-r--r--
getpass.pyc
4.62
KB
-rw-r--r--
gettext.py
22.48
KB
-rw-r--r--
gettext.pyc
17.58
KB
-rw-r--r--
glob.py
3.04
KB
-rw-r--r--
glob.pyc
2.86
KB
-rw-r--r--
gzip.py
18.58
KB
-rw-r--r--
gzip.pyc
14.82
KB
-rw-r--r--
hashlib.py
7.66
KB
-rw-r--r--
hashlib.pyc
6.73
KB
-rw-r--r--
heapq.py
17.87
KB
-rw-r--r--
heapq.pyc
14.19
KB
-rw-r--r--
hmac.py
4.48
KB
-rw-r--r--
hmac.pyc
4.42
KB
-rw-r--r--
htmlentitydefs.py
17.63
KB
-rw-r--r--
htmlentitydefs.pyc
6.22
KB
-rw-r--r--
htmllib.py
12.57
KB
-rw-r--r--
htmllib.pyc
19.66
KB
-rw-r--r--
httplib.py
51.07
KB
-rw-r--r--
httplib.pyc
36.74
KB
-rw-r--r--
ihooks.py
18.54
KB
-rw-r--r--
ihooks.pyc
20.74
KB
-rw-r--r--
imaplib.py
47.23
KB
-rw-r--r--
imaplib.pyc
43.77
KB
-rw-r--r--
imghdr.py
3.46
KB
-rw-r--r--
imghdr.pyc
4.69
KB
-rw-r--r--
imputil.py
25.16
KB
-rw-r--r--
imputil.pyc
15.18
KB
-rw-r--r--
inspect.py
42
KB
-rw-r--r--
inspect.pyc
39.15
KB
-rw-r--r--
io.py
3.24
KB
-rw-r--r--
io.pyc
3.5
KB
-rw-r--r--
keyword.py
1.95
KB
-rwxr-xr-x
keyword.pyc
2.05
KB
-rw-r--r--
linecache.py
3.93
KB
-rw-r--r--
linecache.pyc
3.18
KB
-rw-r--r--
locale.py
100.43
KB
-rw-r--r--
locale.pyc
55.21
KB
-rw-r--r--
macpath.py
6.14
KB
-rw-r--r--
macpath.pyc
7.46
KB
-rw-r--r--
macurl2path.py
2.67
KB
-rw-r--r--
macurl2path.pyc
2.18
KB
-rw-r--r--
mailbox.py
79.34
KB
-rw-r--r--
mailbox.pyc
74.49
KB
-rw-r--r--
mailcap.py
8.21
KB
-rw-r--r--
mailcap.pyc
7.74
KB
-rw-r--r--
markupbase.py
14.3
KB
-rw-r--r--
markupbase.pyc
9.02
KB
-rw-r--r--
md5.py
358
B
-rw-r--r--
md5.pyc
376
B
-rw-r--r--
mhlib.py
32.65
KB
-rw-r--r--
mhlib.pyc
32.83
KB
-rw-r--r--
mimetools.py
7
KB
-rw-r--r--
mimetools.pyc
7.97
KB
-rw-r--r--
mimetypes.py
20.54
KB
-rw-r--r--
mimetypes.pyc
18.02
KB
-rw-r--r--
mimify.py
14.67
KB
-rwxr-xr-x
mimify.pyc
11.69
KB
-rw-r--r--
modulefinder.py
23.89
KB
-rw-r--r--
modulefinder.pyc
18.61
KB
-rw-r--r--
multifile.py
4.71
KB
-rw-r--r--
multifile.pyc
5.26
KB
-rw-r--r--
mutex.py
1.83
KB
-rw-r--r--
mutex.pyc
2.44
KB
-rw-r--r--
netrc.py
5.75
KB
-rw-r--r--
netrc.pyc
4.59
KB
-rw-r--r--
new.py
610
B
-rw-r--r--
new.pyc
860
B
-rw-r--r--
nntplib.py
20.97
KB
-rw-r--r--
nntplib.pyc
20.46
KB
-rw-r--r--
ntpath.py
18.97
KB
-rw-r--r--
ntpath.pyc
12.78
KB
-rw-r--r--
nturl2path.py
2.36
KB
-rw-r--r--
nturl2path.pyc
1.77
KB
-rw-r--r--
numbers.py
10.08
KB
-rw-r--r--
numbers.pyc
13.56
KB
-rw-r--r--
opcode.py
5.35
KB
-rw-r--r--
opcode.pyc
5.99
KB
-rw-r--r--
optparse.py
59.77
KB
-rw-r--r--
optparse.pyc
52.36
KB
-rw-r--r--
os.py
25.3
KB
-rw-r--r--
os.pyc
24.98
KB
-rw-r--r--
os2emxpath.py
4.53
KB
-rw-r--r--
os2emxpath.pyc
4.4
KB
-rw-r--r--
pdb.doc
7.73
KB
-rw-r--r--
pdb.py
45.02
KB
-rwxr-xr-x
pdb.pyc
42.42
KB
-rw-r--r--
pickle.py
44.42
KB
-rw-r--r--
pickle.pyc
37.45
KB
-rw-r--r--
pickletools.py
72.78
KB
-rw-r--r--
pickletools.pyc
55.63
KB
-rw-r--r--
pipes.py
9.36
KB
-rw-r--r--
pipes.pyc
9.06
KB
-rw-r--r--
pkgutil.py
19.77
KB
-rw-r--r--
pkgutil.pyc
18.45
KB
-rw-r--r--
platform.py
52.52
KB
-rwxr-xr-x
platform.pyc
37.65
KB
-rw-r--r--
plistlib.py
15.31
KB
-rw-r--r--
plistlib.pyc
19.05
KB
-rw-r--r--
popen2.py
8.22
KB
-rw-r--r--
popen2.pyc
8.78
KB
-rw-r--r--
poplib.py
12.52
KB
-rw-r--r--
poplib.pyc
12.97
KB
-rw-r--r--
posixfile.py
7.82
KB
-rw-r--r--
posixfile.pyc
7.45
KB
-rw-r--r--
posixpath.py
13.96
KB
-rw-r--r--
posixpath.pyc
11.15
KB
-rw-r--r--
pprint.py
11.5
KB
-rw-r--r--
pprint.pyc
9.92
KB
-rw-r--r--
profile.py
22.25
KB
-rwxr-xr-x
profile.pyc
15.99
KB
-rw-r--r--
pstats.py
26.09
KB
-rw-r--r--
pstats.pyc
24.31
KB
-rw-r--r--
pty.py
4.94
KB
-rw-r--r--
pty.pyc
4.83
KB
-rw-r--r--
py_compile.py
6.14
KB
-rw-r--r--
py_compile.pyc
6.46
KB
-rw-r--r--
pyclbr.py
13.07
KB
-rw-r--r--
pyclbr.pyc
9.4
KB
-rw-r--r--
pydoc.py
93.9
KB
-rwxr-xr-x
pydoc.pyc
90.23
KB
-rw-r--r--
quopri.py
6.8
KB
-rwxr-xr-x
quopri.pyc
6.4
KB
-rw-r--r--
random.py
31.7
KB
-rw-r--r--
random.pyc
25.02
KB
-rw-r--r--
re.py
13.11
KB
-rw-r--r--
re.pyc
13.06
KB
-rw-r--r--
repr.py
4.2
KB
-rw-r--r--
repr.pyc
5.23
KB
-rw-r--r--
rexec.py
19.68
KB
-rw-r--r--
rexec.pyc
23.13
KB
-rw-r--r--
rfc822.py
32.76
KB
-rw-r--r--
rfc822.pyc
30.95
KB
-rw-r--r--
rlcompleter.py
5.85
KB
-rw-r--r--
rlcompleter.pyc
5.92
KB
-rw-r--r--
robotparser.py
7.51
KB
-rw-r--r--
robotparser.pyc
7.77
KB
-rw-r--r--
runpy.py
10.82
KB
-rw-r--r--
runpy.pyc
8.56
KB
-rw-r--r--
sched.py
4.97
KB
-rw-r--r--
sched.pyc
4.86
KB
-rw-r--r--
sets.py
18.6
KB
-rw-r--r--
sets.pyc
16.39
KB
-rw-r--r--
sgmllib.py
17.46
KB
-rw-r--r--
sgmllib.pyc
14.98
KB
-rw-r--r--
sha.py
393
B
-rw-r--r--
sha.pyc
419
B
-rw-r--r--
shelve.py
7.99
KB
-rw-r--r--
shelve.pyc
9.96
KB
-rw-r--r--
shlex.py
10.9
KB
-rw-r--r--
shlex.pyc
7.36
KB
-rw-r--r--
shutil.py
19.41
KB
-rw-r--r--
shutil.pyc
18.75
KB
-rw-r--r--
site.py
19.48
KB
-rw-r--r--
site.pyc
19.08
KB
-rw-r--r--
sitecustomize.py
155
B
-rw-r--r--
sitecustomize.pyc
232
B
-rw-r--r--
smtpd.py
18.11
KB
-rwxr-xr-x
smtpd.pyc
15.45
KB
-rw-r--r--
smtplib.py
31.38
KB
-rwxr-xr-x
smtplib.pyc
29.49
KB
-rw-r--r--
sndhdr.py
5.83
KB
-rw-r--r--
sndhdr.pyc
7.16
KB
-rw-r--r--
socket.py
20.13
KB
-rw-r--r--
socket.pyc
15.71
KB
-rw-r--r--
sre.py
384
B
-rw-r--r--
sre.pyc
517
B
-rw-r--r--
sre_compile.py
19.36
KB
-rw-r--r--
sre_compile.pyc
12.24
KB
-rw-r--r--
sre_constants.py
7.03
KB
-rw-r--r--
sre_constants.pyc
6.04
KB
-rw-r--r--
sre_parse.py
29.98
KB
-rw-r--r--
sre_parse.pyc
20.59
KB
-rw-r--r--
ssl.py
38.25
KB
-rw-r--r--
ssl.pyc
31.75
KB
-rw-r--r--
stat.py
1.8
KB
-rw-r--r--
stat.pyc
2.67
KB
-rw-r--r--
statvfs.py
898
B
-rw-r--r--
statvfs.pyc
618
B
-rw-r--r--
string.py
21.04
KB
-rw-r--r--
string.pyc
19.88
KB
-rw-r--r--
stringold.py
12.16
KB
-rw-r--r--
stringold.pyc
12.2
KB
-rw-r--r--
stringprep.py
13.21
KB
-rw-r--r--
stringprep.pyc
14.11
KB
-rw-r--r--
struct.py
82
B
-rw-r--r--
struct.pyc
237
B
-rw-r--r--
subprocess.py
49.34
KB
-rw-r--r--
subprocess.pyc
31.53
KB
-rw-r--r--
sunau.py
16.82
KB
-rw-r--r--
sunau.pyc
17.87
KB
-rw-r--r--
sunaudio.py
1.37
KB
-rw-r--r--
sunaudio.pyc
1.93
KB
-rw-r--r--
symbol.py
2.01
KB
-rwxr-xr-x
symbol.pyc
2.95
KB
-rw-r--r--
symtable.py
7.26
KB
-rw-r--r--
symtable.pyc
11.41
KB
-rw-r--r--
sysconfig.py
24.88
KB
-rw-r--r--
sysconfig.pyc
18.59
KB
-rw-r--r--
tabnanny.py
11.07
KB
-rwxr-xr-x
tabnanny.pyc
8.01
KB
-rw-r--r--
tarfile.py
89.42
KB
-rw-r--r--
tarfile.pyc
74.47
KB
-rw-r--r--
telnetlib.py
26.4
KB
-rw-r--r--
telnetlib.pyc
22.55
KB
-rw-r--r--
tempfile.py
19.09
KB
-rw-r--r--
tempfile.pyc
19.76
KB
-rw-r--r--
textwrap.py
16.88
KB
-rw-r--r--
textwrap.pyc
11.79
KB
-rw-r--r--
this.py
1002
B
-rw-r--r--
this.pyc
1.19
KB
-rw-r--r--
threading.py
46.01
KB
-rw-r--r--
threading.pyc
41.42
KB
-rw-r--r--
timeit.py
12.49
KB
-rwxr-xr-x
timeit.pyc
11.87
KB
-rw-r--r--
toaiff.py
3.07
KB
-rw-r--r--
toaiff.pyc
3.03
KB
-rw-r--r--
token.py
2.85
KB
-rw-r--r--
token.pyc
3.72
KB
-rw-r--r--
tokenize.py
17.07
KB
-rw-r--r--
tokenize.pyc
14.13
KB
-rw-r--r--
trace.py
29.19
KB
-rwxr-xr-x
trace.pyc
22.19
KB
-rw-r--r--
traceback.py
11.02
KB
-rw-r--r--
traceback.pyc
11.37
KB
-rw-r--r--
tty.py
879
B
-rw-r--r--
tty.pyc
1.28
KB
-rw-r--r--
types.py
2.04
KB
-rw-r--r--
types.pyc
2.65
KB
-rw-r--r--
urllib.py
58.82
KB
-rw-r--r--
urllib.pyc
49.84
KB
-rw-r--r--
urllib2.py
51.57
KB
-rw-r--r--
urllib2.pyc
45.92
KB
-rw-r--r--
urlparse.py
17.2
KB
-rw-r--r--
urlparse.pyc
15.83
KB
-rw-r--r--
user.py
1.59
KB
-rw-r--r--
user.pyc
1.68
KB
-rw-r--r--
uu.py
6.54
KB
-rwxr-xr-x
uu.pyc
4.28
KB
-rw-r--r--
uuid.py
22.63
KB
-rw-r--r--
uuid.pyc
22.56
KB
-rw-r--r--
warnings.py
14.48
KB
-rw-r--r--
warnings.pyc
13.15
KB
-rw-r--r--
wave.py
18.15
KB
-rw-r--r--
wave.pyc
19.44
KB
-rw-r--r--
weakref.py
14.48
KB
-rw-r--r--
weakref.pyc
15.95
KB
-rw-r--r--
webbrowser.py
22.19
KB
-rwxr-xr-x
webbrowser.pyc
19.2
KB
-rw-r--r--
whichdb.py
3.3
KB
-rw-r--r--
whichdb.pyc
2.18
KB
-rw-r--r--
wsgiref.egg-info
187
B
-rw-r--r--
xdrlib.py
5.93
KB
-rw-r--r--
xdrlib.pyc
9.59
KB
-rw-r--r--
xmllib.py
34.05
KB
-rw-r--r--
xmllib.pyc
26.11
KB
-rw-r--r--
xmlrpclib.py
50.91
KB
-rw-r--r--
xmlrpclib.pyc
42.8
KB
-rw-r--r--
zipfile.py
58.08
KB
-rw-r--r--
zipfile.pyc
41.03
KB
-rw-r--r--
Delete
Unzip
Zip
${this.title}
Close
Code Editor : pipes.py
"""Conversion pipeline templates. The problem: ------------ Suppose you have some data that you want to convert to another format, such as from GIF image format to PPM image format. Maybe the conversion involves several steps (e.g. piping it through compress or uuencode). Some of the conversion steps may require that their input is a disk file, others may be able to read standard input; similar for their output. The input to the entire conversion may also be read from a disk file or from an open file, and similar for its output. The module lets you construct a pipeline template by sticking one or more conversion steps together. It will take care of creating and removing temporary files if they are necessary to hold intermediate data. You can then use the template to do conversions from many different sources to many different destinations. The temporary file names used are different each time the template is used. The templates are objects so you can create templates for many different conversion steps and store them in a dictionary, for instance. Directions: ----------- To create a template: t = Template() To add a conversion step to a template: t.append(command, kind) where kind is a string of two characters: the first is '-' if the command reads its standard input or 'f' if it requires a file; the second likewise for the output. The command must be valid /bin/sh syntax. If input or output files are required, they are passed as $IN and $OUT; otherwise, it must be possible to use the command in a pipeline. To add a conversion step at the beginning: t.prepend(command, kind) To convert a file to another file using a template: sts = t.copy(infile, outfile) If infile or outfile are the empty string, standard input is read or standard output is written, respectively. The return value is the exit status of the conversion pipeline. To open a file for reading or writing through a conversion pipeline: fp = t.open(file, mode) where mode is 'r' to read the file, or 'w' to write it -- just like for the built-in function open() or for os.popen(). To create a new template object initialized to a given one: t2 = t.clone() """ # ' import re import os import tempfile import string __all__ = ["Template"] # Conversion step kinds FILEIN_FILEOUT = 'ff' # Must read & write real files STDIN_FILEOUT = '-f' # Must write a real file FILEIN_STDOUT = 'f-' # Must read a real file STDIN_STDOUT = '--' # Normal pipeline element SOURCE = '.-' # Must be first, writes stdout SINK = '-.' # Must be last, reads stdin stepkinds = [FILEIN_FILEOUT, STDIN_FILEOUT, FILEIN_STDOUT, STDIN_STDOUT, \ SOURCE, SINK] class Template: """Class representing a pipeline template.""" def __init__(self): """Template() returns a fresh pipeline template.""" self.debugging = 0 self.reset() def __repr__(self): """t.__repr__() implements repr(t).""" return '<Template instance, steps=%r>' % (self.steps,) def reset(self): """t.reset() restores a pipeline template to its initial state.""" self.steps = [] def clone(self): """t.clone() returns a new pipeline template with identical initial state as the current one.""" t = Template() t.steps = self.steps[:] t.debugging = self.debugging return t def debug(self, flag): """t.debug(flag) turns debugging on or off.""" self.debugging = flag def append(self, cmd, kind): """t.append(cmd, kind) adds a new step at the end.""" if type(cmd) is not type(''): raise TypeError, \ 'Template.append: cmd must be a string' if kind not in stepkinds: raise ValueError, \ 'Template.append: bad kind %r' % (kind,) if kind == SOURCE: raise ValueError, \ 'Template.append: SOURCE can only be prepended' if self.steps and self.steps[-1][1] == SINK: raise ValueError, \ 'Template.append: already ends with SINK' if kind[0] == 'f' and not re.search(r'\$IN\b', cmd): raise ValueError, \ 'Template.append: missing $IN in cmd' if kind[1] == 'f' and not re.search(r'\$OUT\b', cmd): raise ValueError, \ 'Template.append: missing $OUT in cmd' self.steps.append((cmd, kind)) def prepend(self, cmd, kind): """t.prepend(cmd, kind) adds a new step at the front.""" if type(cmd) is not type(''): raise TypeError, \ 'Template.prepend: cmd must be a string' if kind not in stepkinds: raise ValueError, \ 'Template.prepend: bad kind %r' % (kind,) if kind == SINK: raise ValueError, \ 'Template.prepend: SINK can only be appended' if self.steps and self.steps[0][1] == SOURCE: raise ValueError, \ 'Template.prepend: already begins with SOURCE' if kind[0] == 'f' and not re.search(r'\$IN\b', cmd): raise ValueError, \ 'Template.prepend: missing $IN in cmd' if kind[1] == 'f' and not re.search(r'\$OUT\b', cmd): raise ValueError, \ 'Template.prepend: missing $OUT in cmd' self.steps.insert(0, (cmd, kind)) def open(self, file, rw): """t.open(file, rw) returns a pipe or file object open for reading or writing; the file is the other end of the pipeline.""" if rw == 'r': return self.open_r(file) if rw == 'w': return self.open_w(file) raise ValueError, \ 'Template.open: rw must be \'r\' or \'w\', not %r' % (rw,) def open_r(self, file): """t.open_r(file) and t.open_w(file) implement t.open(file, 'r') and t.open(file, 'w') respectively.""" if not self.steps: return open(file, 'r') if self.steps[-1][1] == SINK: raise ValueError, \ 'Template.open_r: pipeline ends width SINK' cmd = self.makepipeline(file, '') return os.popen(cmd, 'r') def open_w(self, file): if not self.steps: return open(file, 'w') if self.steps[0][1] == SOURCE: raise ValueError, \ 'Template.open_w: pipeline begins with SOURCE' cmd = self.makepipeline('', file) return os.popen(cmd, 'w') def copy(self, infile, outfile): return os.system(self.makepipeline(infile, outfile)) def makepipeline(self, infile, outfile): cmd = makepipeline(infile, self.steps, outfile) if self.debugging: print cmd cmd = 'set -x; ' + cmd return cmd def makepipeline(infile, steps, outfile): # Build a list with for each command: # [input filename or '', command string, kind, output filename or ''] list = [] for cmd, kind in steps: list.append(['', cmd, kind, '']) # # Make sure there is at least one step # if not list: list.append(['', 'cat', '--', '']) # # Take care of the input and output ends # [cmd, kind] = list[0][1:3] if kind[0] == 'f' and not infile: list.insert(0, ['', 'cat', '--', '']) list[0][0] = infile # [cmd, kind] = list[-1][1:3] if kind[1] == 'f' and not outfile: list.append(['', 'cat', '--', '']) list[-1][-1] = outfile # # Invent temporary files to connect stages that need files # garbage = [] for i in range(1, len(list)): lkind = list[i-1][2] rkind = list[i][2] if lkind[1] == 'f' or rkind[0] == 'f': (fd, temp) = tempfile.mkstemp() os.close(fd) garbage.append(temp) list[i-1][-1] = list[i][0] = temp # for item in list: [inf, cmd, kind, outf] = item if kind[1] == 'f': cmd = 'OUT=' + quote(outf) + '; ' + cmd if kind[0] == 'f': cmd = 'IN=' + quote(inf) + '; ' + cmd if kind[0] == '-' and inf: cmd = cmd + ' <' + quote(inf) if kind[1] == '-' and outf: cmd = cmd + ' >' + quote(outf) item[1] = cmd # cmdlist = list[0][1] for item in list[1:]: [cmd, kind] = item[1:3] if item[0] == '': if 'f' in kind: cmd = '{ ' + cmd + '; }' cmdlist = cmdlist + ' |\n' + cmd else: cmdlist = cmdlist + '\n' + cmd # if garbage: rmcmd = 'rm -f' for file in garbage: rmcmd = rmcmd + ' ' + quote(file) trapcmd = 'trap ' + quote(rmcmd + '; exit') + ' 1 2 3 13 14 15' cmdlist = trapcmd + '\n' + cmdlist + '\n' + rmcmd # return cmdlist # Reliably quote a string as a single argument for /bin/sh # Safe unquoted _safechars = frozenset(string.ascii_letters + string.digits + '@%_-+=:,./') def quote(file): """Return a shell-escaped version of the file string.""" for c in file: if c not in _safechars: break else: if not file: return "''" return file # use single quotes, and put single quotes into double quotes # the string $'b is then quoted as '$'"'"'b' return "'" + file.replace("'", "'\"'\"'") + "'"
Close