我有一个名为home.html
,我服务的小型html文件,我发现os.path.getsize('home.html')
给出了一个不同于len(open('home.html').read())
。 os.path.getsize
给出的数字是925,而len
给出的数字是910.我知道910是正确的数字,而不是925,因为页面不会使用925使用chrome显示,但它完美地使用910.任何人都可以向我解释发生了什么事?
inb4我不认为这是一个Unicode的东西,因为我在Windows上,我使用python 2.7, file.read
的结果是一个str
不是一个unicode
对象,我的html中的所有字符是ASCII。 这里是home.html
的内容:
<!DOCTYPE html> <html> <body style="text-align:center;"> <a href="https://github.com/ChrisCalderon/Yashttpd"> <img style="position:absolute;top:0;right:0;border:0;" src="https://camo.githubusercontent.com/a6677b08c955af8400f44c6298f40e7d19cc5b2d/68747470733a2f2f73332e616d617a6f6e6177732e636f6d2f6769746875622f726962626f6e732f666f726b6d655f72696768745f677261795f3664366436642e706e67" alt="Fork me on GitHub" data-canonical-src="http://img.zgserver.com/python/forkme_right_gray_6d6d6d.png"> </a> <h1>ECHO SERVER</h1> <p>This is how requests are parsed:</p> <iframe src="echo" style="border:none;width:40%;height:325px;" scrolling="off"> If you see the text, your browser doesn't support iframes! </iframe> <p>The whole code for this site is <a href="myhandler.html">here</a>!</p> <p>This is all built with Yashttpd. Find it in my GitHub repository by clicking the ribbon above!</p> </body> </html>
编辑:我想提一下, os.path.getsize
似乎正常服务我的favicon.ico文件。
该文件有15行,你在磁盘大小和内存大小之间的差异是15。 在Windows上,行尾是序列"\r\n"
,但是当你阅读它时(除非你使用二进制模式打开文件),Python(或者底层例程)在Python末尾转换那些序列,只有"\n"
。
两个值都是正确的:
\r\n
结尾 \n
结尾