[Python-Dev] PEP dircache.py core modification
Palisade
palisade@SirDrinkalot.rm-f.net
Fri, 16 Mar 2001 18:37:54 -0800
--h31gzZEtNLTqOjlF
Content-Type: text/plain; charset=us-ascii
Content-Disposition: inline
This is my first exposure to the Python language, and I have found many things
to my liking. I have also noticed some quirks which I regard as assumption
flaws on part of the interpreter. The one I am interested in at the moment is
the assumption that we should leave the . and .. directory entries out of the
directory listing returned by os.listdir().
I have read the PEP specification and have thereby prepared a PEP for your
perusal. I hope you agree with me that this is both a philosophical issue
based in tradition as well as a duplication of effort problem that can be
readily solved with regards to backwards compatibility.
Thank you.
I have attached the PEP to this message.
Sincerely,
Nelson Rush
"This most beautiful system [The Universe] could only proceed from the
dominion of an intelligent and powerful Being."
-- Sir Isaac Newton
--h31gzZEtNLTqOjlF
Content-Type: text/plain; charset=us-ascii
Content-Disposition: attachment; filename=pep-ldir
PEP:
Title: os.listdir Full Directory Listing
Version:
Author: palisade@users.sourceforge.net (Nelson Rush)
Status:
Type:
Created: 16/3/2001
Post-History:
Introduction
This PEP explains the need for two missing elements in the list returned
by the os.listdir function.
Proposal
It is obvious that having os.listdir() return a list with . and .. is
going to cause many existing programs to function incorrectly. One
solution to this problem could be to create a new function os.listdirall()
or os.ldir() which returns every file and directory including the . and ..
directory entries. Another solution could be to overload os.listdir's
parameters, but that would unnecessarily complicate things.
Key Differences with the Existing Protocol
The existing os.listdir() leaves out both the . and .. directory entries
which are a part of the directory listing as is every other file.
Examples
import os
dir = os.ldir('/')
for i in dir:
print i
The output would become:
.
..
lost+found
tmp
usr
var
WinNT
dev
bin
home
mnt
sbin
boot
root
man
lib
cdrom
proc
etc
info
pub
.bash_history
service
Dissenting Opinion
During a discussion on Efnet #python, an objection was made to the
usefulness of this implementation. Namely, that it is little extra
effort to just insert these two directory entries into the list.
Example:
os.listdir() + ['.','..']
An argument can be made however that the inclusion of both . and ..
meet the standard way of listing files within directories. It is on
basis of this common method between languages of listing directories
that this tradition should be maintained.
It was also suggested that not having . and .. returned in the list
by default is required to be able to perform such actions as `cp * dest`.
However, programs like `ls` and `cp` list and copy files excluding
any directory that begins with a period. Therefore there is no need
to clip . and .. from the directory list by default. Since anything
beginning with a period is considered to be hidden.
Reference Implementation
The reference implementation of the new dircache.py core ldir function
extends listdir's functionality as proposed.
http://palisade.rm-f.net/dircache.py
Copyright
This document has been placed in the Public Domain.
--h31gzZEtNLTqOjlF--