This issue tracker has been migrated to GitHub ,
and is currently read-only.
For more information,
see the GitHub FAQs in the Python's Developer Guide.
Created on 2010年12月05日 16:49 by ocean-city, last changed 2022年04月11日 14:57 by admin. This issue is now closed.
| Messages (8) | |||
|---|---|---|---|
| msg123428 - (view) | Author: Hirokazu Yamamoto (ocean-city) * (Python committer) | Date: 2010年12月05日 16:49 | |
Is this intended behavior? Creating zipfile.ZipFile with
relative path and changing current directory, relative path
is resolved from new directory not from the directory object
was created.
F:\>py3k
Python 3.2a4+ (py3k, Dec 3 2010, 22:11:05) [MSC v.1200 32 bit (Intel)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import zipfile
[67577 refs]
>>> zip = zipfile.ZipFile("non-ascii-cp932.zip", "r")
[68999 refs]
>>> import os
[69001 refs]
>>> os.mkdir("temp")
[69001 refs]
>>> os.chdir("temp")
[69001 refs]
>>> zip.extractall()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "e:\python-dev\py3k\lib\zipfile.py", line 992, in extractall
self.extract(zipinfo, path, pwd)
File "e:\python-dev\py3k\lib\zipfile.py", line 980, in extract
return self._extract_member(member, path, pwd)
File "e:\python-dev\py3k\lib\zipfile.py", line 1023, in _extract_member
source = self.open(member, pwd=pwd)
File "e:\python-dev\py3k\lib\zipfile.py", line 901, in open
zef_file = io.open(self.filename, 'rb')
IOError: [Errno 2] No such file or directory: 'non-ascii-cp932.zip'
[69128 refs]
|
|||
| msg123430 - (view) | Author: Antoine Pitrou (pitrou) * (Python committer) | Date: 2010年12月05日 18:09 | |
I don't know, but I wouldn't call it a bug either. In general it's not recommended to change the current directory except at the very beginning of your application. |
|||
| msg123437 - (view) | Author: Martin v. Löwis (loewis) * (Python committer) | Date: 2010年12月05日 19:21 | |
More formally: it's unspecified. I'd like to propose this general principle: If you pass a relative path to some library that gets stored in the library, it's unspecified whether the cwd is consider at the point of passing the path or at the point of using it in some operation. Applications that want to be cwd-agnostic must always use abspath. The only exceptions are operations where there is some explicit open() operation that is documented to interpret the path name; for these, it is clear that the cwd is considered inside the open(). |
|||
| msg123450 - (view) | Author: R. David Murray (r.david.murray) * (Python committer) | Date: 2010年12月06日 03:55 | |
So, Martin, are you then arguing that this should in fact be considered a bug in ZipFile? The documentation for the constructor says "Open a ZIP file, where file can be either a path to a file (a string) or a file-like object." Reading that I would certainly expect it to accept a relative path, and for that path to be relative to the CWD at the time I called ZipFile, not at the time I called extractall. |
|||
| msg123846 - (view) | Author: Martin v. Löwis (loewis) * (Python committer) | Date: 2010年12月12日 18:55 | |
> So, Martin, are you then arguing that this should in fact be > considered a bug in ZipFile? The documentation for the constructor > says "Open a ZIP file, where file can be either a path to a file (a > string) or a file-like object." Reading that I would certainly > expect it to accept a relative path, and for that path to be relative > to the CWD at the time I called ZipFile, not at the time I called > extractall. You have a point here. So I now think that this should be changed. |
|||
| msg176843 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2012年12月03日 14:09 | |
The patch from issue14099 is intended to fix this issue. |
|||
| msg235449 - (view) | Author: Serhiy Storchaka (serhiy.storchaka) * (Python committer) | Date: 2015年02月05日 19:33 | |
Fixed in issue14099 for 3.5. Do you think that this solution should be backported Martin? An alternative solution of this issue would be to convert relative path to absolute path in ZipFile constructor. |
|||
| msg370619 - (view) | Author: Zackery Spytz (ZackerySpytz) * (Python triager) | Date: 2020年06月02日 19:05 | |
Python 2 is EOL, so I think this issue should be closed. |
|||
| History | |||
|---|---|---|---|
| Date | User | Action | Args |
| 2022年04月11日 14:57:09 | admin | set | github: 54840 |
| 2020年06月02日 20:17:13 | serhiy.storchaka | set | status: open -> closed resolution: out of date stage: resolved |
| 2020年06月02日 19:05:48 | ZackerySpytz | set | nosy:
+ ZackerySpytz messages: + msg370619 |
| 2017年03月24日 16:25:00 | serhiy.storchaka | set | priority: normal -> low versions: - Python 3.3, Python 3.4 |
| 2015年02月05日 19:33:27 | serhiy.storchaka | set | messages:
+ msg235449 versions: - Python 3.2 |
| 2012年12月03日 14:09:33 | serhiy.storchaka | set | nosy:
+ alanmcintyre messages: + msg176843 |
| 2012年12月03日 07:58:45 | Arfrever | set | nosy:
+ Arfrever |
| 2012年12月02日 22:55:11 | serhiy.storchaka | set | nosy:
+ serhiy.storchaka components: + Library (Lib) versions: + Python 2.7, Python 3.2, Python 3.3, Python 3.4 |
| 2010年12月12日 18:55:30 | loewis | set | messages: + msg123846 |
| 2010年12月11日 16:23:32 | eric.araujo | set | nosy:
+ eric.araujo |
| 2010年12月06日 03:55:10 | r.david.murray | set | nosy:
+ r.david.murray messages: + msg123450 |
| 2010年12月05日 19:21:18 | loewis | set | nosy:
+ loewis messages: + msg123437 |
| 2010年12月05日 18:09:24 | pitrou | set | nosy:
+ pitrou messages: + msg123430 |
| 2010年12月05日 16:49:18 | ocean-city | create | |