我需要找到系统上文件夹中的文件数。
这就是我用的:
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)并输入了(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中正常运行。
答案 0 :(得分:0)
我假设您正在使用walk,因为您想知道目录及其子目录中的每个文件。我不明白这里发生了什么:
file_count = sum((os.walk(path)中_,_,f的len(f)))
假设路径包含,比方说,'src'是我家里的目录,我得到了dir及其后代中的文件数,那你的意思是什么?您确定从命令行正确读取了路径吗?你能发布更多吗?
答案 1 :(得分: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'>
答案 2 :(得分:0)
由于我只有该目录中的文件,我改为使用它:
file_count = len([f for f in os.listdir(loadpathTest) if os.path.isfile(os.path.join(loadpathTest, f))])
这似乎有效。
@All 谢谢你的帮助。