1

我需要在系统上的一个文件夹中找到文件的数量。

这是我用的:

file_count = sum((len(f) for _, _, f in os.walk('path')))

当我们将路径指定为引号中的字符串时,这很好用,但是当我输入一个包含路径的变量名时,type(file_count) 是一个生成器对象,因此不能用作整数。

如何解决这个问题以及为什么会发生这种情况?

好的,这就是我正在做的事情:

在终端的命令行中:

python mypyProg.py arg1 arg2 arg3

在 myProg.py 中:

arg1 = sys.argv[1]
file_count = sum((len(f) for _, _, f in os.walk(arg1)))

arg1 作为字符串传递

我检查了 repr(arg1) 和 type(arg1):

repr(arg1) '/home/kartik/Downloads/yahoo_dataset/tryfolder'
type(arg1) <type 'str'>

type(file_count) <type 'generator'>

错误信息:

NDCG = scipy.zeros((file_count,1),float)

    TypeError: an integer is required

我不知道,当我只使用一些虚拟变量输入它时,它在 IDLE python IDE 中运行良好。

4

3 回答 3

0

由于我在该目录中只有文件,因此我使用了这个:

file_count = len([f for f in os.listdir(loadpathTest) if os.path.isfile(os.path.join(loadpathTest, f))])

这似乎有效。

@All 感谢您的帮助。

于 2010-05-21T22:34:41.907 回答
0

sum应该返回一个整数,就像在我的 python shell 中一样......

>>> x = '/tmp'
>>> file_count = sum((len(f) for _, _, f in os.walk(x)))
>>> file_count
11
>>> type(file_count)
<type 'int'>
于 2010-05-21T08:57:56.437 回答
0

我假设您使用 walk 是因为您想知道目录及其子目录中的每个文件。我不明白这里发生了什么:

file_count = sum((len(f) for _, _, f in os.walk(path)))

假设路径包含'src',它是我的主目录中的一个目录,我得到目录中的文件数及其后代,那么你是什么意思?您确定您从命令行正确读取了路径吗?可以多发点吗?

于 2010-05-21T08:42:42.530 回答