python - 如何将元组传递给 python 函数

标签 python python-2.7

我一直在尝试将元组传递给我之前创建的函数,但是,我仍然无法让它工作。 我的目标是传递一个包含路径+文件形式列表的元组,我想发现它的大小并将其打印出来。

这是我的代码

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/

相关文章:

python - 将匹配的元组元素与其他元组的独特元素相结合

python - 在匹配键上添加嵌套字典

python - Django URL 正则表达式

Python:用英语替换法语字母

python - 如何将此代码写入单行命令

python - 将 GAE Webapp2 与多个文件中的类一起使用

python - 在 python 中构造 janusgraph 的 get 查询

python - 为什么 multiprocessing.Process 能够 pickle 修饰函数?

python - 在 python 中使用多个逻辑运算符

python - Pip 无法识别 python 3.5.1 为最新版本