簡體   English   中英

為os.path提供建議

[英]Advise on os.path

我正在編寫一個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是第二個程序

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))

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM