私はPythonが初めてで、FTPからすべてのサブディレクトリ内のすべてのファイルを一覧表示しようとしています. いつものように、FTP はこの形式です。
A
B
C
サブディレクトリ :
AA
BB
CC
['A', 'B', 'C']
を使用してディレクトリを一覧表示できますftp.nlist()
。私は自分の出力として取得したいと思い['AA', 'BB', 'CC']
ます。これを行うための解決策/ヒントを見つけるために、多くのことを試してみました。
私はPythonが初めてで、FTPからすべてのサブディレクトリ内のすべてのファイルを一覧表示しようとしています. いつものように、FTP はこの形式です。
A
B
C
サブディレクトリ :
AA
BB
CC
['A', 'B', 'C']
を使用してディレクトリを一覧表示できますftp.nlist()
。私は自分の出力として取得したいと思い['AA', 'BB', 'CC']
ます。これを行うための解決策/ヒントを見つけるために、多くのことを試してみました。
これは少し古いことは知っていますが、ここでの回答で少し労力を節約できたので、ここにあります. 私は少し素人なので、これはおそらく最も効率的な方法ではありませんが、FTP サーバー上のすべてのディレクトリを取得するために作成したプログラムを次に示します。ツリーがどれだけ下にあるかに関係なく、すべてのディレクトリが一覧表示されます。
from ftplib import FTP
def get_dirs_ftp(folder=""):
contents = ftp.nlst(folder)
folders = []
for item in contents:
if "." not in item:
folders.append(item)
return folders
def get_all_dirs_ftp(folder=""):
dirs = []
new_dirs = []
new_dirs = get_dirs_ftp(folder)
while len(new_dirs) > 0:
for dir in new_dirs:
dirs.append(dir)
old_dirs = new_dirs[:]
new_dirs = []
for dir in old_dirs:
for new_dir in get_dirs_ftp(dir):
new_dirs.append(new_dir)
dirs.sort()
return dirs
host ="your host"
user = "user"
password = "password"
print("Connecting to {}".format(host))
ftp = FTP(host)
ftp.login(user, password)
print("Connected to {}".format(host))
print("Getting directory listing from {}".format(host))
all_dirs = get_all_dirs_ftp()
print("***PRINTING ALL DIRECTORIES***")
for dir in all_dirs:
print(dir)