我使用ftplib连接到ftp站点.我想获取最近上传的文件并下载它.我能够连接到ftp服务器并列出文件,我也将它们放在一个列表中并获得datefield转换.是否有任何功能/模块可以获取最近的日期并从列表中输出整行?
#!/usr/bin/env python
import ftplib
import os
import socket
import sys
HOST = 'test'
def main():
try:
f = ftplib.FTP(HOST)
except (socket.error, socket.gaierror), e:
print 'cannot reach to %s' % HOST
return
print "Connect to ftp server"
try:
f.login('anonymous','al@ge.com')
except ftplib.error_perm:
print 'cannot login anonymously'
f.quit()
return
print "logged on to the ftp server"
data = []
f.dir(data.append)
for line in data:
datestr = ' '.join(line.split()[0:2])
orig-date = time.strptime(datestr, '%d-%m-%y %H:%M%p')
f.quit()
return
if __name__ == '__main__':
main() …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用下载文件FtpWebRequest.
private void DownloadFile(string userName, string password, string ftpSourceFilePath, string localDestinationFilePath)
{
int bytesRead = 0;
byte[] buffer = new byte[1024];
FtpWebRequest request = CreateFtpWebRequest(ftpSourceFilePath, userName, password, true);
request.Method = WebRequestMethods.Ftp.DownloadFile;
Stream reader = request.GetResponse().GetResponseStream();
BinaryWriter writer = new BinaryWriter(File.Open(localDestinationFilePath, FileMode.CreateNew));
while (true)
{
bytesRead = reader.Read(buffer, 0, buffer.Length);
if (bytesRead == 0)
break;
writer.Write(buffer, 0, bytesRead);
}
}
Run Code Online (Sandbox Code Playgroud)
它使用CreateFtpWebRequest我创建的这个方法:
private FtpWebRequest CreateFtpWebRequest(string ftpDirectoryPath, string userName, string password, bool keepAlive = false)
{
FtpWebRequest request = …Run Code Online (Sandbox Code Playgroud) 我可以使用Inno Setup导入.cer文件(证书)吗?
我该怎么做?
我需要为Windows XP,Windows Vista和Windows 7创建证书安装程序.
在Inno Setup启动之前或"select directory"页面之前,我需要将文件复制到一个文件夹.我希望从安装程序复制此文件,而不是从外部源复制,如果有人可以举例.
我使用这段代码:
function NextButtonClick(PageID: Integer): Boolean;
begin
Result := True;
if (PageId = wpWelcome) then
begin
FileCopy(
ExpandConstant('file.exe'),
ExpandConstant('{reg:HKCU\SOFTWARE\XXX,InstallPath}\file.exe'), false);
end;
end;
Run Code Online (Sandbox Code Playgroud)
我希望有人用一个例子给出一个更好的主意.
谢谢你们.
不久,我的问题是,当有大量内存空闲时,为什么WinAPI RegisterClass会失败ERROR_NOT_ENOUGH_MEMORY,我该怎么做才能阻止它呢?
背景: 我正在开发一个应用程序(WinSCP FTP/SFTP客户端),许多人使用它来自动执行文件传输.有些是从Windows Scheduler每天每分钟运行一次.
我收到很多报告,经过一定数量的运行后,应用程序停止工作.触发问题的运行次数似乎并不准确,但它在数万甚至数十万的范围内.此外,似乎只有在Windows Scheduler下运行时才会出现问题,而不是在常规Windows会话中运行时.虽然我无法100%确认这一点.
此外,所有报告似乎都适用于Windows 2008 R2 +一些适用于Windows 7.同样,这可能只是巧合.
我自己能够在Windows 7上重现该问题.一旦系统进入此状态,我的应用程序就不再在Scheduler的会话中启动.但它在正常的常规会话中开始很好.而且一些其他应用程序(不一定全部)甚至在Scheduler的会话中启动.同样在这种状态下我无法调试应用程序,因为它甚至在调试器(或Process Monitor等工具)运行时都没有加载.
该应用程序使用Embarcadero(前Borland)C++ Builder VCL库.它在VCL初始化代码中崩溃(我WinMain甚至没有启动)并退出代码3.检查初始化代码正在做什么,我可能能够识别触发崩溃的代码(尽管它可能只是众多可能的代码之一)原因).
罪魁祸首似乎是RegisterClass返回8(ERROR_NOT_ENOUGH_MEMORY)的WinAPI函数.发生这种情况时,VCL代码会抛出异常; 并且因为还没有异常处理程序,它会崩溃应用程序.
我使用在VS 2012中开发的非常简单的C++控制台应用程序验证了这一点(将问题与C++ Builder和VCL隔离开来).核心代码是:
SetLastError(ERROR_SUCCESS);
fout << L"Registering class" << std::endl;
WNDCLASS WndClass;
memset(&WndClass, 0, sizeof(WndClass));
WndClass.lpfnWndProc = &DefWindowProc;
WndClass.lpszClassName = L"TestClass";
WndClass.hInstance = GetModuleHandle(NULL);
ATOM Atom = RegisterClass(&WndClass);
DWORD Error = GetLastError();
// The Atom is NULL and Error is ERROR_NOT_ENOUGH_MEMORY here
Run Code Online (Sandbox Code Playgroud)
(测试应用程序的完整代码在最后)
尽管有错误,但它似乎不是内存问题.通过在RegisterClass调用之前和之后分配10 MB内存来验证的内容(可以在最后的完整测试代码中看到).
绝望,我甚至偷看了Wine的实施 …
我的Windows应用程序经常在使用Wine的*nix上使用.
由于它是一个以文件为中心的应用程序,它经常使用(并呈现给用户)Windows"文档"文件夹(使用时解析CSIDL_PERSONAL).不幸的是,在Wine下,指向假的Wine/Windows目录通常是空的和未使用的.我想将用户指向他的Unix主文件夹.
有没有可靠的方法来找出它在葡萄酒下的位置?
我希望我能读取HOME环境变量,但它不会导出(与大多数其他变量相反)到Windows环境.
目前我猜测家里正在使用Z:\home\%USERNAME%.但这对我来说并不健全.
如果没有办法找到主目录,是否至少有一种方法可以检测Wine根驱动器(Z:默认情况下),所以我不需要硬编码至少一个驱动器部分的路径?
我将 SFTP 的密钥对文件的内容作为字符串。我需要使用 JSch 添加内容,但addIdentity只接受文件路径。无论如何我可以做到这一点吗?
我看到这个KeyPair类有一个方法 -
KeyPair load(JSch jsch, byte[] bytes, byte[] bytes1)
Run Code Online (Sandbox Code Playgroud)
我不确定这是做什么的。
我正在创建一个窗口服务,用于从 SFTP 服务器下载文件。为此,我正在使用Renci.SshNet,Renci.SshNet.Common和Renci.SshNet.Sftp.
我有这个代码:
String Host = "HostName";
int Port = 22;
String RemoteFileDirectory =
Convert.ToString(ConfigurationManager.AppSettings["SourcePath"]);
String Username = "UserName";
String Password = "*******";
var KeybasedMethod = new KeyboardInteractiveAuthenticationMethod(Username);
KeybasedMethod.AuthenticationPrompt +=
(sender, e) => { e.Prompts.First().Response = password; };
AuthenticationMethod[] methods = new AuthenticationMethod[]
{
new PrivateKeyAuthenticationMethod(Username, new PrivateKeyFile(@"Z:\SFTP SETUP\CJ22")),
KeybasedMethod
};
ConnectionInfo connectionInfo = new ConnectionInfo(hostname, username, methods);
using (var sftp = new SftpClient(connectionInfo))
{
sftp.Connect();
// ...
}
Run Code Online (Sandbox Code Playgroud)
我得到例外。
私钥文件无效。
我无法弄清楚我的代码中缺少什么。
下面是我使用 …
我有一个适用于 Windows 的可执行应用程序 setup.exe,我使用基于 Java 的 Launch4j/Inno Setup 实现。
我经常发布新版本和错误修复。
我想知道是否有自动安装更新的机制?
inno-setup ×4
.net ×2
c# ×2
ftp ×2
sftp ×2
ssh ×2
c#-4.0 ×1
c++ ×1
certificate ×1
distribution ×1
ftplib ×1
installation ×1
installer ×1
java ×1
jsch ×1
launch4j ×1
linux ×1
private-key ×1
python ×1
ssh.net ×1
unix ×1
vcl ×1
winapi ×1
windows ×1
wine ×1