Here an example of what I mean
(Python 2.4.2, IDLE 1.1.2, Windows XP SP2, NTFS file system, 80 GByte
large file):
>>f = file('veryBigFile.dat','r') f = file('veryBigFile.dat','r+')
Traceback (most recent call last):
File "<pyshell#1>", line 1, in -toplevel-
f = file('veryBigFile.dat','r+')
IOError: [Errno 2] No such file or directory: 'veryBigFile.dat'
Is it a BUG or a FEATURE?
Claudio Grondi 8 2118
In <ec**********@newsreader2.netcologne.de>, Claudio Grondi wrote:
>
Here an example of what I mean
(Python 2.4.2, IDLE 1.1.2, Windows XP SP2, NTFS file system, 80 GByte
large file):
>>f = file('veryBigFile.dat','r')
>>f = file('veryBigFile.dat','r+')
You mention the file size and gave a "speaking" name to that file -- does
the file size matter?
Traceback (most recent call last):
File "<pyshell#1>", line 1, in -toplevel-
f = file('veryBigFile.dat','r+')
IOError: [Errno 2] No such file or directory: 'veryBigFile.dat'
Is it a BUG or a FEATURE?
It's the error number Windows returns for that operation.
Ciao,
Marc 'BlackJack' Rintsch
Marc 'BlackJack' Rintsch wrote:
In <ec**********@newsreader2.netcologne.de>, Claudio Grondi wrote:
>>Here an example of what I mean (Python 2.4.2, IDLE 1.1.2, Windows XP SP2, NTFS file system, 80 GByte large file):
>>f = file('veryBigFile.dat','r') f = file('veryBigFile.dat','r+')
You mention the file size and gave a "speaking" name to that file -- does
the file size matter?
Yes, it does.
I haven't tested it yet, but I suppose 2 or 4 GByte threshold value.
>
>>Traceback (most recent call last): File "<pyshell#1>", line 1, in -toplevel- f = file('veryBigFile.dat','r+') IOError: [Errno 2] No such file or directory: 'veryBigFile.dat'
Is it a BUG or a FEATURE?
It's the error number Windows returns for that operation.
So you just try to say:
"it's not Python fault - it's just another bug of the damn Microsoft
Windows operating system", right?
Claudio Grondi
[Claudio Grondi]
Here an example of what I mean
(Python 2.4.2, IDLE 1.1.2, Windows XP SP2, NTFS file system, 80 GByte
large file):
>>f = file('veryBigFile.dat','r')
>>f = file('veryBigFile.dat','r+')
Traceback (most recent call last):
File "<pyshell#1>", line 1, in -toplevel-
f = file('veryBigFile.dat','r+')
IOError: [Errno 2] No such file or directory: 'veryBigFile.dat'
Is it a BUG or a FEATURE?
Assuming the file exists and isn't read-only, I bet it's a Windows
bug, and that if you open in binary mode ("r+b") instead I bet it goes
away (this wouldn't be the first large-file text-mode Windows bug).
Tim Peters wrote:
Assuming the file exists and isn't read-only, I bet it's a Windows
bug, and that if you open in binary mode ("r+b") instead I bet it goes
away (this wouldn't be the first large-file text-mode Windows bug).
dir bigfile.dat
2006-08-28 11:46 5 000 000 000 bigfile.dat
>>f = file("bigfile.dat", "r") f = file("bigfile.dat", "r+")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
IOError: [Errno 2] No such file or directory: 'bigfile.dat'
>>f = file("bigfile.dat", "rb") f = file("bigfile.dat", "r+b")
(typing f.read() here is a nice way to lock up the machine ;-)
</F>
Tim Peters wrote:
[Claudio Grondi]
>Here an example of what I mean (Python 2.4.2, IDLE 1.1.2, Windows XP SP2, NTFS file system, 80 GByte large file):
> >>f = file('veryBigFile.dat','r') f = file('veryBigFile.dat','r+')
Traceback (most recent call last): File "<pyshell#1>", line 1, in -toplevel- f = file('veryBigFile.dat','r+') IOError: [Errno 2] No such file or directory: 'veryBigFile.dat'
Is it a BUG or a FEATURE?
Assuming the file exists and isn't read-only, I bet it's a Windows
bug, and that if you open in binary mode ("r+b") instead I bet it goes
away (this wouldn't be the first large-file text-mode Windows bug).
I knew already that 'r+b' fixes it. Yes, you have won the bet :) .
I suppose, like you do, that because there is a difference between text
and binary files on Windows and the text files are e.g. opened being
buffered using a 32-bit buffer pointer, this fails on too large NTFS files.
I could also imagine that Python tries to buffer the text file and fails
because it uses the wrong pointer size when asking Windows for the
content. I have not yet looked into the C-code of Python - any hint
which file I should take a closer look at?
Just curious to see for myself, that the bug is on the Windows side.
Claudio Grondi
Tim Peters wrote:
>Traceback (most recent call last): File "<pyshell#1>", line 1, in -toplevel- f = file('veryBigFile.dat','r+') IOError: [Errno 2] No such file or directory: 'veryBigFile.dat'
Is it a BUG or a FEATURE?
Assuming the file exists and isn't read-only, I bet it's a Windows
bug, and that if you open in binary mode ("r+b") instead I bet it goes
away (this wouldn't be the first large-file text-mode Windows bug).
however, if you use the C level API, you get EINVAL (which presumably means
that the CRT cannot open this file in text mode), not ENOENT. this is also true
for older versions of Python:
Python 2.1.1 (#20, Aug 23 2001, 11:27:17) [MSC 32 bit (Intel)] on win32
>>f = open("bigfile.dat") f = open("bigfile.dat", "r+")
Traceback (most recent call last):
File "<stdin>", line 1, in ?
IOError: [Errno 22] Invalid argument: 'bigfile.dat'
which probably means that this fix http://www.python.org/sf/538827
is partially responsible for the misleading error message.
(the cause of this seems to be that when you open a text file for updating, the
CRT check if there's a chr(26) at the end of the file, but the 32-bit lseek API
doesn't support seeking to positions larger than 2^31-2)
</F>
Fredrik Lundh wrote:
Tim Peters wrote:
>>>Traceback (most recent call last): File "<pyshell#1>", line 1, in -toplevel- f = file('veryBigFile.dat','r+') IOError: [Errno 2] No such file or directory: 'veryBigFile.dat'
Is it a BUG or a FEATURE?
Assuming the file exists and isn't read-only, I bet it's a Windows bug, and that if you open in binary mode ("r+b") instead I bet it goes away (this wouldn't be the first large-file text-mode Windows bug).
however, if you use the C level API, you get EINVAL (which presumably means
that the CRT cannot open this file in text mode), not ENOENT. this is also true
for older versions of Python:
Python 2.1.1 (#20, Aug 23 2001, 11:27:17) [MSC 32 bit (Intel)] on win32
>>>>f = open("bigfile.dat") f = open("bigfile.dat", "r+")
Traceback (most recent call last):
File "<stdin>", line 1, in ?
IOError: [Errno 22] Invalid argument: 'bigfile.dat'
which probably means that this fix
http://www.python.org/sf/538827
is partially responsible for the misleading error message.
(the cause of this seems to be that when you open a text file for updating, the
CRT check if there's a chr(26) at the end of the file, but the 32-bit lseek API
doesn't support seeking to positions larger than 2^31-2)
</F>
Using MSVC++ .NET 2003 compiler (if I did it all the right way):
fstm = fopen("bigfile.dat","r+");
if(fstm == 0) { printf( " ErrNo: %i \n", errno ); }
// ^-- prints :
// on "r+" with too large file: 22 (EINVAL-Invalid argument)
// on non-existing file : 2 (ENOENT-no such file)
// on bad mode string spec. : 0 (??? why not EINVAL ...)
So there _is_ a way to distinguish the different problems occurred while
opening the file. The error message comes from Python (errnomodule.c),
not from Windows(errno.h). Concluding from this it becomes evident for
me, that this misleading error message is Python fault (even if
originated by misleading errno values set after fopen in the MSVC++
environment and Windows), right?
Probably also in Python 2.5?
Claudio Grondi
Claudio Grondi wrote:
Tim Peters wrote:
>[Claudio Grondi]
>>Here an example of what I mean (Python 2.4.2, IDLE 1.1.2, Windows XP SP2, NTFS file system, 80 GByte large file):
>>f = file('veryBigFile.dat','r') >>f = file('veryBigFile.dat','r+')
Traceback (most recent call last): File "<pyshell#1>", line 1, in -toplevel- f = file('veryBigFile.dat','r+') IOError: [Errno 2] No such file or directory: 'veryBigFile.dat'
Is it a BUG or a FEATURE?
Assuming the file exists and isn't read-only, I bet it's a Windows bug, and that if you open in binary mode ("r+b") instead I bet it goes away (this wouldn't be the first large-file text-mode Windows bug).
I knew already that 'r+b' fixes it. Yes, you have won the bet :) .
I suppose, like you do, that because there is a difference between text
and binary files on Windows and the text files are e.g. opened being
buffered using a 32-bit buffer pointer, this fails on too large NTFS files.
I could also imagine that Python tries to buffer the text file and fails
because it uses the wrong pointer size when asking Windows for the
content. I have not yet looked into the C-code of Python - any hint
which file I should take a closer look at?
That would be Objects/fileobject.c. And no, on just open()ing the file,
Python does nothing more than fopen() (or some Windows equivalent).
Georg This thread has been closed and replies have been disabled. Please start a new discussion. Similar topics
by: Wayno |
last post by:
My php logs are coming up empty. I have done all I can think of, and
all that made sense to me. Can someone take a look at my php.ini
please and tell me what you think may be the problem.
I...
|
by: deko |
last post by:
I use this convention frequently:
Exit_Here:
Exit Sub
HandleErr:
Select Case Err.Number
Case 3163
Resume Next
Case 3376
Resume Next
|
by: Peter Frost |
last post by:
Please help
I don't know if this is possible but what I would really like to do is
to use On Error Goto to capture the code that is being executed when
an error occurs.
Any help would be much...
|
by: Marco Krechting |
last post by:
Hi All,
Sorry but I have to create new message since it cannot find the old
message to send a reply. Coming back to this hyperlink thing I will
try to explain the real problem cause I think we...
|
by: Alvin Bruney |
last post by:
Anybody know how to fix this. Currently only a reboot will cure it. I'm sick
and fed up of rebooting. It has to be one of these services running in the
background doing this. It can happen with any...
|
by: jkn |
last post by:
Hi all
Python 2.4.2 (#1, Apr 26 2006, 23:35:31)
on
linux2
Type "help", "copyright", "credits" or "license" for more information.
Traceback (most recent call last):
File "<stdin>", line 1, in...
|
by: jadamwil |
last post by:
Hello,
I am using the numpy fromfile function to read binary data from a file
on disk. The problem is that the program runs fine on a Mac, but gives
an error or warning on windows when trying to...
|
by: MC |
last post by:
I had 2 folders I couldn't move or delete. Each had contained the
executable from a console-mode Visual Studio 2008 C# application. On trying
to move the folders I got the entirely misleading UAC...
|
by: Fr33dan |
last post by:
Hi,
I'm having trouble with a multi-threaded program crashing on a specific machine when the worker thread is not initialized at when the _FormClosing method of my main form called.
Here is my...
|
by: ryjfgjl |
last post by:
In our work, we often receive Excel tables with data in the same format. If we want to analyze these data, it can be difficult to analyze them because the data is spread across multiple Excel files...
|
by: emmanuelkatto |
last post by:
Hi All, I am Emmanuel katto from Uganda. I want to ask what challenges you've faced while migrating a website to cloud.
Please let me know.
Thanks!
Emmanuel
|
by: nemocccc |
last post by:
hello, everyone, I want to develop a software for my android phone for daily needs, any suggestions?
|
by: Sonnysonu |
last post by:
This is the data of csv file
1 2 3
1 2 3
1 2 3
1 2 3
2 3
2 3
3
the lengths should be different i have to store the data by column-wise with in the specific length.
suppose the i have to...
|
by: Hystou |
last post by:
There are some requirements for setting up RAID:
1. The motherboard and BIOS support RAID configuration.
2. The motherboard has 2 or more available SATA protocol SSD/HDD slots (including MSATA, M.2...
|
by: Hystou |
last post by:
Most computers default to English, but sometimes we require a different language, especially when relocating. Forgot to request a specific language before your computer shipped? No problem! You can...
|
by: Oralloy |
last post by:
Hello folks,
I am unable to find appropriate documentation on the type promotion of bit-fields when using the generalised comparison operator "<=>".
The problem is that using the GNU compilers,...
|
by: Hystou |
last post by:
Overview:
Windows 11 and 10 have less user interface control over operating system update behaviour than previous versions of Windows. In Windows 11 and 10, there is no way to turn off the Windows...
|
by: tracyyun |
last post by:
Dear forum friends,
With the development of smart home technology, a variety of wireless communication protocols have appeared on the market, such as Zigbee, Z-Wave, Wi-Fi, Bluetooth, etc. Each...
| |