多年来,我一直在使用一个非常简单的批处理文件从unixftp服务器下载数百万个文件
login
passwd
ascii
prompt n
cd to the right directory
get some_file
get another_file
cd to the next directory
repeat the pattern
这样做的好处是它很简单,所有的文件都带有Window的换行符,这样文件就可以与我现有的程序一起使用了。因为我的路由器发生了一些变化,我不得不编写一个Python脚本来提取文件-我的第一个版本的脚本非常简单-但是它可以工作
^{pr2}$但是,文件没有任何明显的换行符。这些文件存储在unix系统中。在我使用Windows命令shell下载文件之前,换行符就在那里。我尝试过发送ASCII命令,但正如预期的那样没有任何效果。在
我必须能够访问原来存在的换行符,因为我的一些代码处理是基于行的。在
我看着这个,想知道为什么ftplib的创建者决定首先去掉新行字符。我在谷歌上搜索,没有找到一个令人满意的答案,所以我想去ftplib并修改代码-这对我来说比我的第一个答案更简单。于是我找到了ftplib.pyC:\Python27\Lib中的文件
我做了一份名为ftplib的拷贝_myMOD.py公司然后打开。找到了retrlines函数并对其进行了修改
保存文件,关闭空闲并重新启动它。完成此操作并导入后
^{pr2}$我发现线路断了。在
我喜欢这种方法,因为它意味着我的步骤比使用lambda时少。不确定这是否是一个好的实践,但它是有趣的,看看功能,并从中学习一些东西。在
很喜欢PyNEwbie对lambda的使用,谢谢。这是同一代码的一个更通用的版本-尝试将此作为注释添加到您的帖子中,但它不接受代码:
就像通常我写问题的时候,我可以去寻找答案。我想删除这个问题,而不是回答它,但我想可能还有其他人像我一样可以使用这个答案,所以我将发表我从这篇文章中得到的东西。在
我想保存文件,而不是像脚本中那样打印到屏幕上
基本上,retrlines是一次从服务器检索一行(在下面的脚本中,我正在写行,因为它到达时添加了一个新行字符)。在
我不太了解lamda函数,也不知道回调是什么,所以这是一个借口,让我最终把脑袋放在这些概念上。在
相关问题 更多 >
编程相关推荐