原文標題《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....