当前位置: 首页 > 面试题库 >

使用Python的ftplib获取目录列表,可移植

章景同
2023-03-14
问题内容

您可以将ftplib用于Python中的完整FTP支持。但是,获取目录列表的首选方法是:

# File: ftplib-example-1.py

import ftplib

ftp = ftplib.FTP("www.python.org")
ftp.login("anonymous", "ftplib-example-1")

data = []

ftp.dir(data.append)

ftp.quit()

for line in data:
    print "-", line

产生:

$ python ftplib-example-1.py
- total 34
- drwxrwxr-x  11 root     4127         512 Sep 14 14:18 .
- drwxrwxr-x  11 root     4127         512 Sep 14 14:18 ..
- drwxrwxr-x   2 root     4127         512 Sep 13 15:18 RCS
- lrwxrwxrwx   1 root     bin           11 Jun 29 14:34 README -> welcome.msg
- drwxr-xr-x   3 root     wheel        512 May 19  1998 bin
- drwxr-sr-x   3 root     1400         512 Jun  9  1997 dev
- drwxrwxr--   2 root     4127         512 Feb  8  1998 dup
- drwxr-xr-x   3 root     wheel        512 May 19  1998 etc
...

我想这个想法是解析结果以获取目录列表。但是,此列表直接取决于FTP服务器格式化列表的方式。为此必须编写代码,而且必须预料FTP服务器格式化该列表的所有不同方式。

有没有一种可移植的方法来使目录列表充满数组?

(阵列应仅具有文件夹名称。)


问题答案:

尝试使用ftp.nlst(dir)

但是,请注意,如果文件夹为空,则可能会引发错误:

files = []

try:
    files = ftp.nlst()
except ftplib.error_perm, resp:
    if str(resp) == "550 No files found":
        print "No files in this directory"
    else:
        raise

for f in files:
    print f


 类似资料:
  • 问题内容: 有没有办法在Python中返回当前目录中所有子目录的列表? 我知道您可以使用文件来执行此操作,但是我需要获取目录列表。 问题答案: 你是指直接子目录,还是树下的每个目录? 无论哪种方式,你都可以使用以下方法: 将为每个子目录生成一个元组。该三元组中的第一个条目是目录名称,因此 应该递归地给你所有的子目录。 请注意,元组中的第二个条目是该条目在第一个位置的子目录的列表,因此你可以改用它,

  • 问题内容: 我正在尝试连接到FTP,但无法运行任何命令。 将引发此错误: 错误: [WinError 10060]连接尝试失败,因为一段时间后连接方未正确响应,或者由于连接的主机未能响应,建立的连接失败 我已经使用FileZilla测试了连接(在同一台计算机上运行),并且工作正常。 这是FileZilla日志: 问题答案: 状态:服务器发送了具有不可路由地址的被动回复 以上表示FTP服务器配置错误

  • 问题内容: 假设我有一个URL:我想获得目录下所有文件/目录的列表。 我正在使用Java 5。 我可以使用此程序http://www.httrack.com/获得dir的列表,但是使用Java我不知道是否可行。 有谁知道如何用Java获得它?或者,如果Java无法执行,该程序将如何完成工作? 问题答案: 有一些条件: 服务器必须已启用目录列表,以便您查看其内容。 我没有办法(没有API或HTTP动

  • 问题内容: 只是一个简单的问题,如何获得指定目录内的目录列表。 例如, 现在,我需要获取“路径”目录中的目录列表。 谢谢! 问题答案: 诸如此类(添加null检查,异常等。)

  • 问题内容: 我正在尝试使用Python将CSV文件加载到Amazon S3。我需要知道CSV文件的修改时间。我正在使用ftplib将FTP与Python(2.7)连接。 问题答案: MLST或MDTM 虽然可以使用或命令通过FTP检索单个文件的时间戳,但ftplib都不支持。 当然,您可以使用实现自己的或。 有关详细信息,请参阅RFC 3659,尤其是: 3.文件修改时间(MDTM) 7.机器处理

  • 问题内容: 我正在寻找一种从给定的classpath目录中获取所有资源名称的列表的方法,例如。 例如,给定一个路径目录包含文件和子目录应该返回一个List 包含下列字符串: 。 它应该同时适用于文件系统和jar中的资源。 我知道我可以用Files,JarFiles和URLs编写一个简短的代码段,但是我不想重新发明轮子。我的问题是,鉴于现有的公共可用库,最快的实现方法是getResourceName