Implement suggestion from Lawrence Kesteloot in PR#280, to change the

default list of files from () to None, and explicitly test for None
before defaulting to sys.argv[1:].  This means that if you pass in an
explicit empty list, it will read stdin instead of defaulting to
sys.argv[1:].  This fixes a buglet in the test script (when called
with options but without files, it chokes when it tries to interpret
the options as files).

Lawrence adds: "I suspect that this is a safe change, because I can't
imagine someone actively passing in an empty list when they want
sys.argv used."

I agree.
This commit is contained in:
Guido van Rossum 2000-04-10 17:16:12 +00:00
parent b81e70ebdb
commit 2516b39dd3
1 changed files with 7 additions and 6 deletions

View File

@ -77,7 +77,7 @@ import sys, os, stat
_state = None
def input(files=(), inplace=0, backup=""):
def input(files=None, inplace=0, backup=""):
global _state
if _state and _state._file:
raise RuntimeError, "input() already active"
@ -123,15 +123,16 @@ def isstdin():
class FileInput:
def __init__(self, files=(), inplace=0, backup=""):
def __init__(self, files=None, inplace=0, backup=""):
if type(files) == type(''):
files = (files,)
else:
files = tuple(files)
if files is None:
files = sys.argv[1:]
if not files:
files = tuple(sys.argv[1:])
if not files:
files = ('-',)
files = ('-',)
else:
files = tuple(files)
self._files = files
self._inplace = inplace
self._backup = backup