使用 os.walk 查找 FTP 服务器的总大小
Using os.walk to find total size of FTP server
我正在尝试使用以下脚本查找 ftp 服务器的总文件大小:
import os
import ftplib
from os.path import join, getsize
serveradd = ("an.ftpserver.co.uk") # Define the ftp server
print("Logging in to "+serveradd+"\n")
top = os.getcwd() # Define the current directory
filelist = []
for (root, dirs, files) in os.walk(top): # Get list of files in current directory
filelist.extend(files)
break
dirname = os.path.relpath(".","..") # Get the current directory name
ftp = ftplib.FTP(serveradd)
try: # Log in to FTP server
ftp.login("username", "password")
except:
"Failed to log in..."
ftp.cwd('data/TVT/') # CD into the TVT folder
print("Contents of "+serveradd+"/"+ftp.pwd()+":")
ftp.retrlines("LIST") # List directories on FTP server
print("\n")
print(ftp.pwd())
print(serveradd+ftp.pwd())
size = 0
for (root, dirs, files) in os.walk(ftp.pwd()):
for x in dirs:
try:
ftp.cwd(x)
size += ftp.size(".")
ftp.cwd("..")
except ftplib.error_perm:
pass
print(size)
一切正常,直到我尝试使用 os.walk 查找 FTP 服务器上的目录列表,使用 ftp.cwd 进入每个目录并添加总大小到变量 "size".
当我调用 print(size) 结果为 0 时,它应该是一个正整数。
我是否遗漏了 os.wallk 和 ftp.pwd 的组合?
使用此函数通过 ftp 客户端获取目录的大小。
def get_size_of_directory(ftp, directory):
size = 0
for name in ftp.nlst(directory):
try:
ftp.cwd(name)
size += get_size_of_directory(name)
except:
ftp.voidcmd('TYPE I')
size += ftp.size(name)
return size
你可以递归地调用你在目录中找到的每个目录的get_size_of_directory
希望这有帮助!!
我正在尝试使用以下脚本查找 ftp 服务器的总文件大小:
import os
import ftplib
from os.path import join, getsize
serveradd = ("an.ftpserver.co.uk") # Define the ftp server
print("Logging in to "+serveradd+"\n")
top = os.getcwd() # Define the current directory
filelist = []
for (root, dirs, files) in os.walk(top): # Get list of files in current directory
filelist.extend(files)
break
dirname = os.path.relpath(".","..") # Get the current directory name
ftp = ftplib.FTP(serveradd)
try: # Log in to FTP server
ftp.login("username", "password")
except:
"Failed to log in..."
ftp.cwd('data/TVT/') # CD into the TVT folder
print("Contents of "+serveradd+"/"+ftp.pwd()+":")
ftp.retrlines("LIST") # List directories on FTP server
print("\n")
print(ftp.pwd())
print(serveradd+ftp.pwd())
size = 0
for (root, dirs, files) in os.walk(ftp.pwd()):
for x in dirs:
try:
ftp.cwd(x)
size += ftp.size(".")
ftp.cwd("..")
except ftplib.error_perm:
pass
print(size)
一切正常,直到我尝试使用 os.walk 查找 FTP 服务器上的目录列表,使用 ftp.cwd 进入每个目录并添加总大小到变量 "size".
当我调用 print(size) 结果为 0 时,它应该是一个正整数。
我是否遗漏了 os.wallk 和 ftp.pwd 的组合?
使用此函数通过 ftp 客户端获取目录的大小。
def get_size_of_directory(ftp, directory):
size = 0
for name in ftp.nlst(directory):
try:
ftp.cwd(name)
size += get_size_of_directory(name)
except:
ftp.voidcmd('TYPE I')
size += ftp.size(name)
return size
你可以递归地调用你在目录中找到的每个目录的get_size_of_directory 希望这有帮助!!