- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Indy IDFTP 来创建目录。我需要找到一种可靠的方法来确定目录是否存在,如果不存在,则调用 MakeDir。我尝试了以下代码,但是调用 List 时没有发生异常,因此即使当时目录不存在,MakeDir 也没有执行。如何判断一个目录是否存在,如果不存在则创建该目录?
{ Check to see if the '/public_html/XXX/' + iDomain + 'Thumbnails' directory exists }
try
IdFTP1.List(nil, '/public_html/XXX/' + iDomain + 'Thumbnails', False);
except
on e: EIdReplyRFCError do
begin
{ '/public_html/XXX/' + iDomain + 'Thumbnails' directory does not exist }
StatusBar1.SimpleText := 'Making thumbnail directory...';
StatusBar1.Update;
iFolder := '/public_html/XXX/' + iDomain;
{ Change directory to /public_html/XXX/iDomain }
IdFTP1.ChangeDir(iFolder);
iFolder := 'Thumbnails';
{ Create FTP Directory for Thumbnails }
IdFTP1.MakeDir(iFolder);
end;
end;
在我的测试过程中,该目录不存在,但在运行时 e 为零?我的做法正确吗?
最佳答案
如果 TIdFTP.List()
没有引发异常,则 FTP 服务器很可能返回 450
回复代码,这仅意味着“未执行请求的文件操作” ”。 TIdFTP.InternalGet()
(由 TIdFTP.List()
、TIdFTP.ExtListDir()
和 TIdFTP.Get 使用()
) 不会将 450
视为错误条件,因为某些服务器(如 Ericsson Switch FTP)在列出空的内容时发送 450
,但在其他情况下存在目录,因此没有要发送的列表数据。不过,当请求的目录不存在时,某些服务器确实会发送450
。 TIdFTP.List()
不会尝试区分。但是,如果 TIdFTP.List()
未引发异常,您可以查看 TIdFTP.LastCmdResult
属性,以便在需要时手动区分。
此外,您不能仅仅依赖引发异常的事实来表示该文件夹不存在。可能会发生任意数量的错误。您必须实际查看错误并采取相应措施,例如:
var
Exists: Boolean;
try
IdFTP1.List(nil, '/public_html/XXX/' + iDomain + 'Thumbnails', False);
Exists := True;
if IdFTP1.LastCmdResult.NumericCode = 450 then
begin
if (IdFTP1.LastCmdResult.Text.Text has a message like 'No such file or directory' or similar) then begin
Exists := False;
end;
// look for other possible text messages...
end;
except
on e: EIdReplyRFCError do
begin
if (e.ErrorCode <> 550) or (e.Message does not have a message like 'Directory not found' or similar) then begin
raise;
end;
Exists := false;
end;
end;
if not Exists then
begin
{ '/public_html/XXX/' + iDomain + 'Thumbnails' directory does not exist }
StatusBar1.SimpleText := 'Making thumbnail directory...';
StatusBar1.Update;
iFolder := '/public_html/XXX/' + iDomain;
{ Change directory to /public_html/XXX/iDomain }
IdFTP1.ChangeDir(iFolder);
iFolder := 'Thumbnails';
{ Create FTP Directory for Thumbnails }
IdFTP1.MakeDir(iFolder);
end;
更好的方法是:
ChangeDir()
直接到目标目录,看看是否失败。如果是这样,则开始向后遍历路径,为每个父目录调用 ChangeDir()
直到最后成功,然后使用 MakeDir()
和 沿路径返回>ChangeDir()
根据需要创建缺少的子目录。
从路径中的第一个目录开始,对其进行 ChangeDir()
操作,然后使用 List()
查看下一个子文件夹是否存在,如果需要,MakeDir()
它,然后 ChangeDir()
到它,并根据需要重复,直到到达目标目录。
欢迎使用FTP。它不是一个非常有效的目录管理协议(protocol)。
关于delphi - IDFTP DirExists 和 MakeDir,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27955141/
关闭。这个问题是off-topic .它目前不接受答案。 想改进这个问题吗? Update the question所以它是on-topic用于堆栈溢出。 关闭 10 年前。 Improve thi
我有一个程序在启动时检查用户提供的输出目录是否存在。如果找不到该目录,程序会尝试创建它: if not os.path.exists(path): os.makedirs(path) 路径是目录的
我正在尝试将以下伪代码转换为 Python: If does not exist: Create all subdirectories for Create a file in This s
我想遍历现有路径和文件名的文本文件中的每一行,将字符串分为驱动器、路径和文件名。然后我想做的是将文件及其路径复制到新位置 - 不同的驱动器或 append 到现有文件树(即,如果 S:\A\B\C\D
我的路径中的 ~ 有点问题。 此代码示例创建了一些名为 ~/some_dir 的目录,但不明白我想在我的主目录中创建 some_dir。 my_dir = "~/some_dir" if not os
我正在使用 Indy IDFTP 来创建目录。我需要找到一种可靠的方法来确定目录是否存在,如果不存在,则调用 MakeDir。我尝试了以下代码,但是调用 List 时没有发生异常,因此即使当时目录不存
我尝试在 Google Colab 中导入数据(如下所示) from imblearn.datasets import make_imbalance 但是我得到的输出是: /usr/local/lib
我使用此代码为用户创建文件夹: work_path = '/tmp/' os.umask(0000) for i in user: if not os.path.exists(work_pat
我有个小问题。我是 python 的新手,所以我需要这里的帮助。 我正在尝试创建一个文件夹,但它应该独立于位置。 用户可以在桌面上,它会在桌面上,如果在目录中等等。 我的意思是: os.mkdir('
我正在尝试创建与文件同名的目录。有一个文件:readme它没有扩展名。它被夹在 os.makedirs(directory) 中声称该文件存在。 source = "Users/me/Desktop/
我使用 python 3.7 和以下命令创建一个在 Linux 上运行但在 Windows 上不起作用的目录: try: #shutil.rmtree('../../di
在我正在使用的 Linux 服务器上,我需要创建具有以下结构的目录: /dir1/dir2/dir3/YYYY/MM/DD/file.ext 在某些情况下(因为目录取决于日期)我需要一次创建多个目录,
我正在阅读一个基于pyftpdlib的ftp平台代码,该代码无法在我的Linux上运行。我使用 sudo 来确保权限。 当 pyftpdlib 运行我的代码,然后我的代码运行 os.makedirs
os.makedir(path)和os.makedirs(path) 今天工作中将hadoop文件同步到服务器磁盘,由于文件类别目录较多,迁移文件时需要判断是否存在 这里有两个方法os.mkdi
关闭。这个问题需要debugging details .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve this questio
pip install tensorflow==1.14.0 TensorFlow 版本:1.14.0 Python 版本:3.6.8 Hadoop 版本:Hadoop 主干 (hadoop-3.3.
如何使此命令验证错误? if blablablabla: os.makedirs('C:\\test\\') 如果文件夹已经存在,他返回一个错误...我怎样才能让它忽略这个错误?继续前进? 最
我只是想处理一个上传的文件并将其写入一个名为系统时间戳的工作目录中。问题是我想创建具有完全权限 (777) 的目录,但我做不到!使用以下代码创建具有 755 权限的目录。 def handle_upl
我正在使用“Lightweight Django”一书学习 Django。我正在使用 Django 1.8。但是,我无法运行这段代码。这是错误消息: 工作树: 构建.py import os impo
在 Ubuntu AWS 实例上,我尝试在设置 Apache 后设置 Flask 服务。 在 /var/www/html/myApp/ ,我有这些文件,其中包括: myApp.pymyApp.wsgi
我是一名优秀的程序员,十分优秀!