2012-05-21 39 views
2

我一直在一個小的python程序,只是連接到我的nas和清理我的一些文件名。我正在使用python ftp lib連接到nas並執行我的操作。確定一個ftp文件是否是一個普通的文件或文件夾與python ftp庫

我只是想知道如果有人有一個很好的方法來檢查服務器上的文件是否實際上是一個文件,或者如果它是一個文件夾?

這是我使用的是什麼:

try: 
    ftp.cwd(line) 
    #If we got here then this "line" is a folder 
    # Do my folder stuff 
    ftp._ftp.cwd('..') #don't forget to go back after it worked 
except ftplib.error_perm: 
    #An exception! So this means we are dealing with a file 
    #So do some file stuff 
except: 
    #Sometimes you just can't get in the folder for some reason 
    falsepos = falsepos + 1 

我可以看看列出該目錄的輸出,但是這不是在不同的平臺相同,我想建立什麼樣的東西會繼續工作即使我出於某種原因替換了我的nas。

我的代碼中還有一個小錯誤。有時它仍然將文件夾視爲常規文件...

您的意見?

(我使用Python 2.7)

回答

2

我沒有發現任何平臺之間的差異。在哪些平臺上這不起作用?:

isFile = lambda e: e[0][0] != 'd' 
for e in ftp.dir('.'): 
    if isFile(e): 
    foo(e) 
    else: 
    bar(e) 
+0

我在以前的文章中閱讀過有關此主題的文章,指出某些ftp系統之間存在一些差異。而且沒有標準輸出。例如:http://stackoverflow.com/q/111954/1393744。所以我不想那樣檢查它。如果我錯了,請告訴我。 – Mike

+0

[RFC for FTP](http://www.faqs.org/rfcs/rfc959.html)指出LIST命令不適合自動使用(搜索「(LIST)」)。 – Trylks

+0

對不起,「enter」的意外行爲。 Python是一種編程語言,它的庫應該在自動環境中工作,而不僅僅是一個很酷的命令行。如果平臺之間存在差異,那麼ftplib應該抽象出支持的平臺,如果它不是Python的增強提議。對不起,我不知道是哪種情況,到目前爲止,這段代碼爲我工作,但我不能保證它總能正常工作。 – Trylks

相關問題