我正在学习Python。我有一个函数 readwrite(filename,list)。 filename的类型为string。 list是一个包含要在文件中重写的字符串的列表。
我有一个像这样简单的函数调用:
fname = 'hello.txt'
readwrite('xx'+fname, datalist)
我面临的问题是,当我在函数定义中打印文件名参数值时,我得到hello.txt而不是xxHello.txt - 这是一个奇怪的事情,当我从commadline做同样的事情时,我没想到一个示例函数,它工作正常。 我想知道我在那里失踪了什么。
这是代码:
def readwrite(fileName, list):
print 'arg file=',filename
curdir = os.getcwd();
fullpath = os.path.join(curdir, filename);
print('full path calculated as: '+fullpath);
fileExist = os.path.exists(fullpath);
if(fileExist):
print 'file exists and opening in \'arw\'mode'
fiel = open(fileName, 'arw') # valid only if exists
else:
print "file doesnt exist; opening in \'w\'mode"
fiel = open(fileName, 'w') # if it doesnt exist, we cant open it for reading as nothing to read.
for line in list:
fiel.write('\n'+line)
print 'position of new pointer = ', fiel.tell()
- 调用函数的主代码:
filename = 'put.txt'
strList = ['hello', 'how', 'are', 'you']
readwrite(('xx'+filename), strList);
- fn def print'arg file =',filename 中的第二行打印 hello.txt 而不是 xxHello。 txt
这是我的困惑,因为它为什么表现得很糟糕,或者我做错了什么。
答案 0 :(得分:12)
Python区分大小写。下面两行是指两个不同的变量(注意第一个中的大写“N”):
def readwrite(fileName, list):
print 'arg file=',filename
发生的事情是第二行选择名为filename
的全局变量而不是名为fileName
的函数参数。