| 1 |
ftputil 2.2 is now available from |
|---|
| 2 |
http://ftputil.sschwarzer.net/download . |
|---|
| 3 |
|
|---|
| 4 |
Changes since version 2.1 |
|---|
| 5 |
------------------------- |
|---|
| 6 |
|
|---|
| 7 |
- Results of stat calls (also indirect calls, i. e. listdir, |
|---|
| 8 |
isdir/isfile/islink, exists, getmtime etc.) are now cached and |
|---|
| 9 |
reused. This results in remarkable speedups for many use cases. |
|---|
| 10 |
Thanks to Evan Prodromou for his permission to add his lrucache |
|---|
| 11 |
module under ftputil's license. |
|---|
| 12 |
|
|---|
| 13 |
- The current directory is also locally cached, resulting in further |
|---|
| 14 |
speedups. |
|---|
| 15 |
|
|---|
| 16 |
- It's now possible to write and plug in custom parsers for directory |
|---|
| 17 |
formats which ftputil doesn't support natively. |
|---|
| 18 |
|
|---|
| 19 |
- File-like objects generated via ``FTPHost.file`` now support the |
|---|
| 20 |
iterator protocol (for line in some_file: ...). |
|---|
| 21 |
|
|---|
| 22 |
- The documentation has been updated accordingly. Read it under |
|---|
| 23 |
http://ftputil.sschwarzer.net/trac/wiki/Documentation . |
|---|
| 24 |
|
|---|
| 25 |
Possible incompatibilities: |
|---|
| 26 |
|
|---|
| 27 |
- This release requires at least Python 2.3. (Previous releases |
|---|
| 28 |
worked with Python versions from 2.1 up.) |
|---|
| 29 |
|
|---|
| 30 |
- The method ``FTPHost.set_directory_format`` has been removed, |
|---|
| 31 |
since the directory format (Unix or MS) is set automatically. (The |
|---|
| 32 |
new method ``set_parser`` is a different animal since it takes |
|---|
| 33 |
a parser object to parse "foreign" formats, not a string.) |
|---|
| 34 |
|
|---|
| 35 |
What is ftputil? |
|---|
| 36 |
---------------- |
|---|
| 37 |
|
|---|
| 38 |
ftputil is a high-level FTP client library for the Python programming |
|---|
| 39 |
language. ftputil implements a virtual file system for accessing FTP |
|---|
| 40 |
servers, that is, it can generate file-like objects for remote files. |
|---|
| 41 |
The library supports many functions similar to those in the os, |
|---|
| 42 |
os.path and shutil modules. ftputil has convenience functions for |
|---|
| 43 |
conditional uploads and downloads, and handles FTP clients and servers |
|---|
| 44 |
in different timezones. |
|---|
| 45 |
|
|---|
| 46 |
License |
|---|
| 47 |
------- |
|---|
| 48 |
|
|---|
| 49 |
ftputil 2.2 is Open Source software, released under the revised BSD |
|---|
| 50 |
license (see http://www.opensource.org/licenses/bsd-license.php ). |
|---|
| 51 |
|
|---|
| 52 |
Stefan |
|---|
| 53 |
|
|---|
| 54 |
---------------------------------------------------------------------- |
|---|
| 55 |
The second beta version of ftputil 2.2 is available. You can download |
|---|
| 56 |
it from http://ftputil.sschwarzer.net/download . |
|---|
| 57 |
|
|---|
| 58 |
With respect to the first beta release, it's now possible to write |
|---|
| 59 |
and plug in custom parsers for FTP directory formats that ftputil |
|---|
| 60 |
doesn't know natively. The documentation has been updated accordingly. |
|---|
| 61 |
|
|---|
| 62 |
The documentation for this release is online at |
|---|
| 63 |
http://ftputil.sschwarzer.net/trac/wiki/Documentation#Documentationforftputil2.2b2 , |
|---|
| 64 |
so you can read about the extensions in more detail. |
|---|
| 65 |
|
|---|
| 66 |
Please download and test the release. Do you miss something which |
|---|
| 67 |
should be in this release? Are there any bugs? |
|---|
| 68 |
|
|---|
| 69 |
Stefan |
|---|
| 70 |
|
|---|
| 71 |
---------------------------------------------------------------------- |
|---|
| 72 |
The first beta version of ftputil 2.2 is available. You can download |
|---|
| 73 |
it from http://ftputil.sschwarzer.net/download . |
|---|
| 74 |
|
|---|
| 75 |
With respect to the previous alpha release, the cache now uses the |
|---|
| 76 |
lrucache module by Evan Prodromou which is bundled with the ftputil |
|---|
| 77 |
distribution. (Evan also gave his permission to include the module |
|---|
| 78 |
under ftputil's modified BSD license instead of the Academic License.) |
|---|
| 79 |
The documentation for the cache and its control have been added to |
|---|
| 80 |
ftputil.txt / ftputil.html . |
|---|
| 81 |
|
|---|
| 82 |
File objects generated with FTPHost.file now support the iterator |
|---|
| 83 |
protocol (for line in some_file: ...). |
|---|
| 84 |
|
|---|
| 85 |
Please download and test the release. Do you miss something which |
|---|
| 86 |
should be in this release? Are there any bugs? |
|---|
| 87 |
|
|---|
| 88 |
Stefan |
|---|
| 89 |
|
|---|
| 90 |
---------------------------------------------------------------------- |
|---|
| 91 |
Welcome to the first alpha release of ftputil 2.2, ftputil 2.2a1. |
|---|
| 92 |
Please download it from http://ftputil.sschwarzer.net/download . |
|---|
| 93 |
|
|---|
| 94 |
This version adds caching of stat results to ftputil. This also |
|---|
| 95 |
affects indirect calls via FTPHost.path, e. g. methods isfile, |
|---|
| 96 |
exists, getmtime, getsize. The test script at |
|---|
| 97 |
http://ftputil.sschwarzer.net/trac/browser/tags/release2_2a1/sandbox/list_dir_test.py |
|---|
| 98 |
runs about 20 times as fast as before adding caching! :-) |
|---|
| 99 |
|
|---|
| 100 |
As the "alpha" part implies, this release is not production-ready, |
|---|
| 101 |
it's even kind of experimental: The caching works but there's no |
|---|
| 102 |
cache entry expiration yet. (I plan to implement an LRU expiration |
|---|
| 103 |
strategy or something similar.) Apart from that, the release is |
|---|
| 104 |
tested as any production release. I suggest using the --prefix |
|---|
| 105 |
option for installing alpha releases. |
|---|
| 106 |
|
|---|
| 107 |
That said, it would be helpful if you tested this release and |
|---|
| 108 |
report your findings. When testing the code, please make sure |
|---|
| 109 |
that your code uses the ftputil version you intend (alpha vs. |
|---|
| 110 |
production version), e. g. by setting the PYTHONPATH environment |
|---|
| 111 |
variable. I'm very interested in the speedups - and any problems |
|---|
| 112 |
you encounter. |
|---|
| 113 |
|
|---|
| 114 |
Stefan |
|---|
| 115 |
|
|---|
| 116 |
---------------------------------------------------------------------- |
|---|
| 117 |
ftputil 2.1.1 is now available from |
|---|
| 118 |
http://ftputil.sschwarzer.net/download . |
|---|
| 119 |
|
|---|
| 120 |
This release fixes a bug which happened when a client opened |
|---|
| 121 |
a large file on the server as a file-like object and read |
|---|
| 122 |
only a part of it. For details, see |
|---|
| 123 |
http://ftputil.sschwarzer.net/trac/ticket/17 . |
|---|
| 124 |
|
|---|
| 125 |
Stefan |
|---|
| 126 |
|
|---|
| 127 |
---------------------------------------------------------------------- |
|---|
| 128 |
Changes since version 2.0 |
|---|
| 129 |
------------------------- |
|---|
| 130 |
|
|---|
| 131 |
- Added new methods to the FTPHost class, namely makedirs, walk, |
|---|
| 132 |
rmtree. |
|---|
| 133 |
|
|---|
| 134 |
- The FTP server directory format ("Unix" vs. "Windows") is now set |
|---|
| 135 |
automatically (thanks to Andrew Ittner for testing it). |
|---|
| 136 |
|
|---|
| 137 |
- Border cases like inaccessible login directories and whitespace in |
|---|
| 138 |
directory names, are now handled more gracefully (based on input |
|---|
| 139 |
from Valeriy Pogrebitskiy, Tommy Sundstr�nd H. Y. Chu). |
|---|
| 140 |
|
|---|
| 141 |
- The documentation was updated. |
|---|
| 142 |
|
|---|
| 143 |
- A Russian translation of the documentation (currently slightly |
|---|
| 144 |
behind) was contributed by Anton Stepanov. It's also on the website |
|---|
| 145 |
at http://ftputil.sschwarzer.net/trac/wiki/RussianDocumentation . |
|---|
| 146 |
|
|---|
| 147 |
- New website, http://ftputil.sschwarzer.net/ with wiki, issue tracker |
|---|
| 148 |
and Subversion repository (thanks to Trac!) |
|---|
| 149 |
|
|---|
| 150 |
Please enter not only bugs but also enhancement request into |
|---|
| 151 |
the issue tracker! |
|---|
| 152 |
|
|---|
| 153 |
Possible incompatibilities: |
|---|
| 154 |
|
|---|
| 155 |
- The exception hierarchy was changed slightly, which might break |
|---|
| 156 |
client code. See http://ftputil.sschwarzer.net/trac/changeset/489 |
|---|
| 157 |
for the change details and the possibly necessary code changes. |
|---|
| 158 |
|
|---|
| 159 |
- FTPHost.rmdir no longer removes non-empty directories. Use the new |
|---|
| 160 |
method FTPHost.rmtree for this. |
|---|
| 161 |
|
|---|
| 162 |
What is ftputil? |
|---|
| 163 |
---------------- |
|---|
| 164 |
|
|---|
| 165 |
ftputil is a high-level FTP client library for the Python programming |
|---|
| 166 |
language. ftputil implements a virtual file system for accessing FTP |
|---|
| 167 |
servers, that is, it can generate file-like objects for remote files. |
|---|
| 168 |
The library supports many functions similar to those in the os, |
|---|
| 169 |
os.path and shutil modules. ftputil has convenience functions for |
|---|
| 170 |
conditional uploads and downloads, and handles FTP clients and servers |
|---|
| 171 |
in different timezones. |
|---|
| 172 |
|
|---|
| 173 |
License |
|---|
| 174 |
------- |
|---|
| 175 |
|
|---|
| 176 |
ftputil 2.1 is Open Source software, released under the revised BSD |
|---|
| 177 |
license (see http://www.opensource.org/licenses/bsd-license.php ). |
|---|
| 178 |
|
|---|
| 179 |
Stefan |
|---|
| 180 |
|
|---|
| 181 |
---------------------------------------------------------------------- |
|---|
| 182 |
ftputil 2.0.3 is now available at |
|---|
| 183 |
http://www.sschwarzer.net/python/python_software.html#ftputil . |
|---|
| 184 |
|
|---|
| 185 |
This release fixes (for most cases) some problems when logging into an |
|---|
| 186 |
FTP server with an inaccessible login directory, i. e. `getcwd()` |
|---|
| 187 |
returns "/some/login/dir" but `chdir("/some/login/dir")` fails. |
|---|
| 188 |
|
|---|
| 189 |
Thanks go to Valeriy Pogrebitskiy for investigating and reporting |
|---|
| 190 |
these problems. |
|---|
| 191 |
|
|---|
| 192 |
Stefan |
|---|
| 193 |
|
|---|
| 194 |
---------------------------------------------------------------------- |
|---|
| 195 |
Here's ftputil 2.0 ! |
|---|
| 196 |
|
|---|
| 197 |
ftputil is a high-level alternative to Python's ftplib module. With |
|---|
| 198 |
ftputil, you can access directories and files on remote FTP servers |
|---|
| 199 |
almost as if they were in your local file system. This includes using |
|---|
| 200 |
file-like objects representing remote files. |
|---|
| 201 |
|
|---|
| 202 |
For future releases see |
|---|
| 203 |
http://www.sschwarzer.net/python/python_software.html |
|---|
| 204 |
or subscribe to the mailing list at |
|---|
| 205 |
http://codespeak.net/mailman/listinfo/ftputil |
|---|
| 206 |
|
|---|
| 207 |
What's new? |
|---|
| 208 |
----------- |
|---|
| 209 |
|
|---|
| 210 |
From version 1.1 to 2.0, the following has changed: |
|---|
| 211 |
|
|---|
| 212 |
- ftputil has been re-organized and is now a Python package (the |
|---|
| 213 |
import statement is still the same) |
|---|
| 214 |
|
|---|
| 215 |
- installation via Python distutils |
|---|
| 216 |
|
|---|
| 217 |
- stat, upload_if_newer, download_if_newer etc. work correctly if the |
|---|
| 218 |
server is in another time zone than the client running ftputil (with |
|---|
| 219 |
help from Andrew Ittner); see section "Time zone correction" in the |
|---|
| 220 |
documentation |
|---|
| 221 |
|
|---|
| 222 |
- it's possible to set the directory listing format "manually" (though |
|---|
| 223 |
in most cases it's recognized automatically); see section "Stat'ing |
|---|
| 224 |
files and directories" |
|---|
| 225 |
|
|---|
| 226 |
- added a workaround regarding whitespace in directory names (thanks |
|---|
| 227 |
to Tommy Sundstr�nd H. Y. Chu) |
|---|
| 228 |
|
|---|
| 229 |
- extended documentation and converted it to HTML format (now |
|---|
| 230 |
generated from reStructured Text) |
|---|
| 231 |
|
|---|
| 232 |
- several bugfixes |
|---|
| 233 |
|
|---|
| 234 |
- there's now a mailing list at http://codespeak.net/mailman/listinfo/ftputil |
|---|
| 235 |
(thanks to Holger Krekel) |
|---|
| 236 |
|
|---|
| 237 |
Documentation |
|---|
| 238 |
------------- |
|---|
| 239 |
|
|---|
| 240 |
The documentation for ftputil can be found in the file ftputil.txt |
|---|
| 241 |
(reStructured Text format) or ftputil.html (recommended, generated |
|---|
| 242 |
from ftputil.txt). |
|---|
| 243 |
|
|---|
| 244 |
License |
|---|
| 245 |
------- |
|---|
| 246 |
|
|---|
| 247 |
ftputil is Open Source Software. It is distributed under a BSD-style |
|---|
| 248 |
license (see the top of ftputil.py). |
|---|
| 249 |
|
|---|
| 250 |
Stefan |
|---|
| 251 |
|
|---|
| 252 |
---------------------------------------------------------------------- |
|---|
| 253 |
ftputil 1.1 is released. You can find it at |
|---|
| 254 |
http://www.ndh.net/home/sschwarzer/python/python_software.html . |
|---|
| 255 |
|
|---|
| 256 |
ftputil provides a higher-level interface for FTP sessions than the |
|---|
| 257 |
ftplib module. FTP servers can be accessed via an interface similar to |
|---|
| 258 |
os and os.path. Remote files are accessible as file-like objects. |
|---|
| 259 |
|
|---|
| 260 |
New since version 1.0: |
|---|
| 261 |
|
|---|
| 262 |
- ftputil now runs under Python 2.1+ (not only 2.2+). |
|---|
| 263 |
- documentation |
|---|
| 264 |
- conditional upload/download (depending on local and remote file |
|---|
| 265 |
timestamps) |
|---|
| 266 |
- FTPHost.stat follows links |
|---|
| 267 |
- a session factory other than the default, ftplib.FTP, can be given |
|---|
| 268 |
in the FTPHost constructor; this allows to use classes derived from |
|---|
| 269 |
ftplib.FTP (like ftpslib.FTP_TLS from the M2Crypto package) |
|---|
| 270 |
- several bugfixes (mostly regarding byte count in text mode |
|---|
| 271 |
transfers) |
|---|
| 272 |
- unit test |
|---|
| 273 |
|
|---|
| 274 |
Stefan |
|---|
| 275 |
---------------------------------------------------------------------- |
|---|
| 276 |
Hello Pythoneers :) |
|---|
| 277 |
|
|---|
| 278 |
I would like to announce ftputil.py, a module which provides a |
|---|
| 279 |
more friendly interface for FTP sessions than the ftplib module. |
|---|
| 280 |
|
|---|
| 281 |
The FTPHost objects generated from it allow many operations similar |
|---|
| 282 |
to those of os and os.path. Examples: |
|---|
| 283 |
|
|---|
| 284 |
# download some files from the login directory |
|---|
| 285 |
import ftputil |
|---|
| 286 |
host = ftputil.FTPHost('ftp.domain.com', 'user', 'secret') |
|---|
| 287 |
names = host.listdir(host.curdir) |
|---|
| 288 |
for name in names: |
|---|
| 289 |
if host.path.isreg(name): |
|---|
| 290 |
host.download(name, name, 'b') # remote, local, binary mode |
|---|
| 291 |
|
|---|
| 292 |
# make a new directory and copy a remote file into it |
|---|
| 293 |
host.mkdir('newdir') |
|---|
| 294 |
source = host.file('index.html', 'r') # file-like object |
|---|
| 295 |
target = host.file('newdir/index.html', 'w') # file-like object |
|---|
| 296 |
host.copyfileobj(source, target) # mimics shutil.copyfileobj |
|---|
| 297 |
source.close() |
|---|
| 298 |
target.close() |
|---|
| 299 |
|
|---|
| 300 |
Even host.path.walk works. :-) But slow. ;-) |
|---|
| 301 |
|
|---|
| 302 |
ftputil.py can be downloaded from |
|---|
| 303 |
http://www.ndh.net/home/sschwarzer/download/ftputil.py |
|---|
| 304 |
|
|---|
| 305 |
I would like to get your suggestions and comments. :-) |
|---|
| 306 |
|
|---|
| 307 |
Stefan |
|---|
| 308 |
|
|---|
| 309 |
|
|---|
| 310 |
P.S.: Thanks to Pedro Rodriguez for his helpful answer to my question |
|---|
| 311 |
in comp.lang.python :-) |
|---|
| 312 |
---------------------------------------------------------------------- |
|---|