posix -> os

This commit is contained in:
Guido van Rossum 1992-03-31 18:55:40 +00:00
parent a05026b38d
commit c96207abb3
3 changed files with 35 additions and 39 deletions

View file

@ -1,11 +1,10 @@
# Module 'dircache' # Module 'dircache'
# #
# Return a sorted list of the files in a POSIX directory, using a cache # Return a sorted list of the files in a directory, using a cache
# to avoid reading the directory more often than necessary. # to avoid reading the directory more often than necessary.
# Also contains a subroutine to append slashes to directories. # Also contains a subroutine to append slashes to directories.
import posix import os
import path
cache = {} cache = {}
@ -16,13 +15,13 @@ def listdir(path): # List directory contents, using cache
except KeyError: except KeyError:
cached_mtime, list = -1, [] cached_mtime, list = -1, []
try: try:
mtime = posix.stat(path)[8] mtime = os.stat(path)[8]
except posix.error: except os.error:
return [] return []
if mtime <> cached_mtime: if mtime <> cached_mtime:
try: try:
list = posix.listdir(path) list = os.listdir(path)
except posix.error: except os.error:
return [] return []
list.sort() list.sort()
cache[path] = mtime, list cache[path] = mtime, list
@ -32,5 +31,5 @@ opendir = listdir # XXX backward compatibility
def annotate(head, list): # Add '/' suffixes to directories def annotate(head, list): # Add '/' suffixes to directories
for i in range(len(list)): for i in range(len(list)):
if path.isdir(path.join(head, list[i])): if os.path.isdir(os.path.join(head, list[i])):
list[i] = list[i] + '/' list[i] = list[i] + '/'

View file

@ -2,9 +2,7 @@
# #
# Defines a class to build directory diff tools on. # Defines a class to build directory diff tools on.
import posix import os
import path
import dircache import dircache
import cmpcache import cmpcache
@ -18,8 +16,8 @@ class dircmp:
def new(dd, (a, b)): # Initialize def new(dd, (a, b)): # Initialize
dd.a = a dd.a = a
dd.b = b dd.b = b
# Properties that caller may change before callingdd. run(): # Properties that caller may change before calling dd.run():
dd.hide = ['.', '..'] # Names never to be shown dd.hide = [os.curdir, os.pardir] # Names never to be shown
dd.ignore = ['RCS', 'tags'] # Names ignored in comparison dd.ignore = ['RCS', 'tags'] # Names ignored in comparison
# #
return dd return dd
@ -53,18 +51,18 @@ class dircmp:
dd.common_funny = [] dd.common_funny = []
# #
for x in dd.common: for x in dd.common:
a_path = path.join(dd.a, x) a_path = os.path.join(dd.a, x)
b_path = path.join(dd.b, x) b_path = os.path.join(dd.b, x)
# #
ok = 1 ok = 1
try: try:
a_stat = statcache.stat(a_path) a_stat = statcache.stat(a_path)
except posix.error, why: except os.error, why:
# print 'Can\'t stat', a_path, ':', why[1] # print 'Can\'t stat', a_path, ':', why[1]
ok = 0 ok = 0
try: try:
b_stat = statcache.stat(b_path) b_stat = statcache.stat(b_path)
except posix.error, why: except os.error, why:
# print 'Can\'t stat', b_path, ':', why[1] # print 'Can\'t stat', b_path, ':', why[1]
ok = 0 ok = 0
# #
@ -92,8 +90,8 @@ class dircmp:
# The hide and ignore properties are inherited from the parent # The hide and ignore properties are inherited from the parent
dd.subdirs = {} dd.subdirs = {}
for x in dd.common_dirs: for x in dd.common_dirs:
a_x = path.join(dd.a, x) a_x = os.path.join(dd.a, x)
b_x = path.join(dd.b, x) b_x = os.path.join(dd.b, x)
dd.subdirs[x] = newdd = dircmp().new(a_x, b_x) dd.subdirs[x] = newdd = dircmp().new(a_x, b_x)
newdd.hide = dd.hide newdd.hide = dd.hide
newdd.ignore = dd.ignore newdd.ignore = dd.ignore
@ -151,7 +149,7 @@ class dircmp:
def cmpfiles(a, b, common): def cmpfiles(a, b, common):
res = ([], [], []) res = ([], [], [])
for x in common: for x in common:
res[cmp(path.join(a, x), path.join(b, x))].append(x) res[cmp(os.path.join(a, x), os.path.join(b, x))].append(x)
return res return res
@ -165,7 +163,7 @@ def cmp(a, b):
try: try:
if cmpcache.cmp(a, b): return 0 if cmpcache.cmp(a, b): return 0
return 1 return 1
except posix.error: except os.error:
return 2 return 2

View file

@ -1,7 +1,6 @@
# Module 'shutil' -- utility functions usable in a shell-like program # Module 'shutil' -- utility functions usable in a shell-like program
import posix import os
import path
MODEBITS = 010000 # Lower 12 mode bits MODEBITS = 010000 # Lower 12 mode bits
# Change this to 01000 (9 mode bits) to avoid copying setuid etc. # Change this to 01000 (9 mode bits) to avoid copying setuid etc.
@ -19,17 +18,17 @@ def copyfile(src, dst):
# Copy mode bits from src to dst # Copy mode bits from src to dst
# #
def copymode(src, dst): def copymode(src, dst):
st = posix.stat(src) st = os.stat(src)
mode = divmod(st[0], MODEBITS)[1] mode = divmod(st[0], MODEBITS)[1]
posix.chmod(dst, mode) os.chmod(dst, mode)
# Copy all stat info (mode bits, atime and mtime) from src to dst # Copy all stat info (mode bits, atime and mtime) from src to dst
# #
def copystat(src, dst): def copystat(src, dst):
st = posix.stat(src) st = os.stat(src)
mode = divmod(st[0], MODEBITS)[1] mode = divmod(st[0], MODEBITS)[1]
posix.chmod(dst, mode) os.chmod(dst, mode)
posix.utimes(dst, st[7:9]) os.utime(dst, st[7:9])
# Copy data and mode bits ("cp src dst") # Copy data and mode bits ("cp src dst")
# #
@ -47,24 +46,24 @@ def copy2(src, dst):
# The destination must not already exist. # The destination must not already exist.
# #
def copytree(src, dst): def copytree(src, dst):
names = posix.listdir(src) names = os.listdir(src)
posix.mkdir(dst, 0777) os.mkdir(dst, 0777)
dot_dotdot = '.', '..' dot_dotdot = (os.curdir, os.pardir)
for name in names: for name in names:
if name not in dot_dotdot: if name not in dot_dotdot:
srcname = path.join(src, name) srcname = os.path.join(src, name)
dstname = path.join(dst, name) dstname = os.path.join(dst, name)
#print 'Copying', srcname, 'to', dstname #print 'Copying', srcname, 'to', dstname
try: try:
#if path.islink(srcname): #if os.path.islink(srcname):
# linkto = posix.readlink(srcname) # linkto = os.readlink(srcname)
# posix.symlink(linkto, dstname) # os.symlink(linkto, dstname)
#elif path.isdir(srcname): #elif os.path.isdir(srcname):
if path.isdir(srcname): if os.path.isdir(srcname):
copytree(srcname, dstname) copytree(srcname, dstname)
else: else:
copy2(srcname, dstname) copy2(srcname, dstname)
# XXX What about devices, sockets etc.? # XXX What about devices, sockets etc.?
except posix.error, why: except os.error, why:
print 'Could not copy', srcname, 'to', dstname, print 'Could not copy', srcname, 'to', dstname,
print '(', why[1], ')' print '(', why[1], ')'