Python程式設計 獲取ftp目錄下資料夾和檔案

2021-08-14 08:16:57 字數 2773 閱讀 8274

原文標題《python ftplib.ftp 獲取當前路徑下所有目錄》

python內建庫ftplib中,ftp 模組裡有乙個dir函式,可以列印出當前路徑下所有檔案,但是這個函式沒有返回值,只是列印出來。

還有乙個nlst函式,可以返回乙個檔名的列表,但是只有檔名,沒有詳細資訊,無法判斷是否是目錄。

目前我只有兩個笨辦法,

乙個繼承ftp類,自己實現乙個getsubdir()方法,可以直接copy nlst()函式的原始碼,把cmd的字串替換成「list」,再加上乙個判斷語句。

參考:

# myftp.py

from ftplib import ftp

class

myftp

(ftp):

encoding = "gbk"

# 預設編碼

defgetsubdir

(self, *args):

'''拷貝了 nlst() 和 dir() **修改,返回詳細資訊而不列印'''

cmd = 'list'

func = none

if args[-1:] and type(args[-1]) != type(''):

args, func = args[:-1], args[-1]

for arg in args:

cmd = cmd + (' ' + arg)

files =

return files

defgetdirs

(self, dirname=none):

"""返回目錄列表,包括檔案簡要資訊"""

if dirname != none:

self.cwd(dirname)

files = self.getsubdir()

# 處理返回結果,只需要目錄名稱

r_files = [file.split(" ")[-1] for file in files]

# 去除. ..

return [file for file in r_files if file != "."

and file !=".."]

defgetfiles

(self, dirname=none):

"""返回檔案列表,簡要資訊"""

if dirname != none:

self.cwd(dirname) # 設定ftp當前操作的路徑

return self.nlst() # 獲取目錄下的檔案

# 這個感覺有點亂,後面再說,

# def getalldirs(self, dirname=none):

# """返回檔案列表,獲取整個ftp所有資料夾和檔名稱簡要資訊"""

# if dirname != none:

# self.cwd(dirname) # 設定ftp當前操作的路徑

# files =

# dirs = set(self.getdirs()) - set(self.getfiles())

# if dirs != {}:

# for name in dirs:

# self.cwd("..") # 返回上級

# files += self.getalldirs(name)

# return files

deftest

(): ftp = myftp() # 例項化

ftp.connect("ip", port) # 連線

ftp.login("username", "password") # 登入

# 獲取第一層目錄下的檔案

# lst =ftp.getdirs()

# print(lst)

# for name in lst:

# ftp.cwd("..") # 返回上級

# names = ftp.getdirs(name)

# print(names)

lst = ftp.getdirs() # 返回目錄下資料夾和檔案列表

print(lst)

ftp.quit() # 退出

if __name__ == '__main__':

test()

當然,使用的時候可以新建乙個類,封裝起來,這樣便於使用

from myftp import myftp

class

ftpdata

(object):

def__init__

(self):

self.ftp = myftp()

self.ftp.connect("ip", port)

self.ftp.login("username", "password")

defgetfiles

(self, dirname):

lst =self.ftp.getdirs(dirname)

return lst

def__del__

(self):

self.ftp.quit()

if __name__ == '__main__':

ftpdata = ftpdata()

lst = ftpdata.getfiles("dirname")

print(lst)

Python程式設計 獲取ftp目錄下資料夾和檔案

原文標題 python ftplib.ftp 獲取當前路徑下所有目錄 python內建庫ftplib中,ftp 模組裡有乙個dir函式,可以列印出當前路徑下所有檔案,但是這個函式沒有返回值,只是列印出來。還有乙個nlst函式,可以返回乙個檔名的列表,但是只有檔名,沒有詳細資訊,無法判斷是否是目錄。目...

python 獲取工作目錄

coding cp936 importsys,os 獲取指令碼檔案的當前路徑 defcur file dir 獲取指令碼路徑 path sys.path 0 判斷為指令碼檔案還是py2exe編譯後的檔案,如果是指令碼檔案,則返回的是指令碼的目錄,如果是py2exe編譯後的檔案,則返回的是編譯後的檔案...

Python 獲取檔案目錄

cwd os.getcwd 獲取檔案路徑 print cwd print os.path.basename cwd print os.path.dirname cwd basename返回path最後的檔名。如果path以 或 結尾,那麼就會返回空值。os.path.basename c test....