我一直在尝试将元组传递给我之前创建的函数,但是,我仍然无法让它工作。 我的目标是传递一个包含路径+文件形式列表的元组,我想发现它的大小并将其打印出来。
这是我的代码
EXl = ('C:\\vd36e404.vdb','C:\\vd368c03.vdb')
def fileF(EXl):
import os
filesize = os.path.getsize(EXl)
print (filesize);
fileF(EXl)
这些是错误:
Traceback (most recent call last):
File "C:\Documents and Settings\Administrator\workspace\test1py\testcallMyF.py", line 13, in <module>
fileF(EXl)
File "C:\Documents and Settings\Administrator\workspace\test1py\testcallMyF.py", line 9, in fileF
filesize= os.path.getsize(EXl)
File "C:\Python27\lib\genericpath.py", line 49, in getsize
return os.stat(filename).st_size
TypeError: coercing to Unicode: need string or buffer, tuple found
谁能向我解释为什么?(我使用的是 Python 2.7.2)
最佳答案
您已成功将元组传递给您自己的函数。但是 os.path.getsize()
不接受元组,它只接受单个字符串。
此外,这个问题有点令人困惑,因为您的示例不是路径 + 文件元组,它类似于 ('C:\\', 'vd36e404.vdb')
。
要处理类似的事情,您可以这样做:
import os
def fileF(EXl):
filesize= os.path.getsize(EXl[0] + EXl[1])
print (filesize);
如果你想打印多个路径的值,按Bing Hsu做说,并使用 for 循环。或者使用列表理解:
def fileF(EXl):
filesizes = [os.path.getsize(x) for x in EXl]
print filesizes
或者如果你想返回另一个元组:
def fileF(EXl):
return tuple(os.path.getsize(x) for x in EXl)
关于python - 如何将元组传递给 python 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9151102/