建议os.path

时间:2013-05-02 05:57:55

标签: python

我正在写一个python脚本给我一个给定目录中的文件和目录的数量,并且我的结果各不相同

对于以下代码,我输出的输出不正确

#! /usr/bin/python
import os
os.system('clear')

x=raw_input('enter a path ')
y=os.listdir(x)
k=0
m=0
for a in y:
        if os.path.isfile(a):
                k=k+1
        elif os.path.isdir(a):
                m=m+1



print ('files are %d' % (k))
print ('dirs are %d' % (m))

当我使用以下代码时,它可以正常工作

#!/usr/local/bin/python
import os
os.system('clear')
x=os.listdir('.')
m=0
n=0
for a in x:
        if os.path.isfile(a):
                m=m+1
        elif os.path.isdir(a):
                n=n+1

print ('%d files and %d directories' % (m,n))

所以,在第一种情况下,当我通过命令行输入目录名并且出于某种原因在第二种情况下工作时它不起作用。

由于 赛


[root@##### python]# python ford.py 
enter a path /var 
0 is the number of files in /var 
25 is the number of directories in /var

[root@#### python]# python os2.py

enter a path /var
/var files are 0 dirs are 1

这里os.py是上面我问题中的第一个程序,而ford.py是第二个

1 个答案:

答案 0 :(得分:0)

listdir仅返回文件名列表,没有基本路径。将这些文件名与x合并以获得完整路径。

#! /usr/bin/python
import os
os.system('clear')

x=raw_input('enter a path ')
y=os.listdir(x)
k=0
m=0
for a in y:
    p = os.path.join(x, a)  # <-- here
    if os.path.isfile(p):
       k=k+1
    elif os.path.isdir(p):
       m=m+1

print ('files are %d' % (k))
print ('dirs are %d' % (m))