Size: 7545
Comment:
|
Size: 7567
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
`` | |
Line 5: | Line 6: |
1. ''列举下'':在这些情况下,我们都在简单使用 Python IDE:一个错误发生了,异常被打印出来('''根据'''你的 IDE,有意地以一种刺眼的红色形式表示)[[BR]] | 1. `列举下`:在这些情况下,我们都在简单使用 Python IDE:一个错误发生了,异常被打印出来('''根据'''你的 IDE,有意地以一种刺眼的红色形式表示)[[BR]] |
Line 7: | Line 8: |
1. ''下一段'':但是许多时候,一个异常是可以'''预计''' <!> 的…… (./) '''预见''' 1. ''例 6.1 下, Para 1'':''Would you rather get back an unusable file object '''to''' a non-existent file''?[[BR]] |
1. `下一段`:但是许多时候,一个异常是可以'''预计''' <!> 的…… (./) '''预见''' 1. `例 6.1 下, Para 1'':''Would you rather get back an unusable file object '''to''' a non-existent file''?[[BR]] |
Line 12: | Line 13: |
1. ''例6.2, (1)'':termios 是'''一个 UNIX 特定模块'''[[BR]] | 1. `例6.2, (1)`:termios 是'''一个 UNIX 特定模块'''[[BR]] |
Line 14: | Line 15: |
1. ''例6.2, (2)'':……它是'''一个 Windows 特定模块'''[[BR]] | 1. `例6.2, (2)`:……它是'''一个 Windows 特定模块'''[[BR]] |
Line 16: | Line 17: |
1. ''例6.2, (3)'':它是'''一个 Mac OS 特定模块'''[[BR]] | 1. `例6.2, (3)`:它是'''一个 Mac OS 特定模块'''[[BR]] |
Line 18: | Line 19: |
1. ''例6.2, (4)'':……注意''','''我们在这里做的:…… (./) 注意我们在这里'''所'''做的:…… 1. ''例6.2, (5)'':一处样式错误。还请参见源文件。 1. ''例6.2, (5), Line -1'':[[BR]] |
1. `例6.2, (4)`:……注意''','''我们在这里做的:…… (./) 注意我们在这里'''所'''做的:…… 1. `例6.2, (5)`:一处样式错误。还请参见源文件。 1. `例6.2, (5), Line -1'':[[BR]] |
Line 28: | Line 29: |
1. ''Para 1'':……正如下一个例子所'''显示''' <!> 的。 (./) '''展示''' 1. ''例6.4, (2)'':0 表示移动到一个绝对位置(从文件'''开始'''算起),0 表示移到一个相对位置(从当前位置算起),还有 2 表示'''对于'''文件尾的一个相对位置。[[BR]] |
1. `Para 1`:……正如下一个例子所'''显示''' <!> 的。 (./) '''展示''' 1. `例6.4, (2)`:0 表示移动到一个绝对位置(从文件'''开始'''算起),0 表示移到一个相对位置(从当前位置算起),还有 2 表示'''对于'''文件尾的一个相对位置。[[BR]] |
Line 31: | Line 32: |
1. ''同上'':添加了译注,说明了“文件尾”指的是文件的结束标记,而不是最后一个字节。 1. ''例6.4, (3)'':tell 方法确认了'''已经移到当前文件位置'''。[[BR]] |
1. `同上'':添加了译注,说明了“文件尾”指的是文件的结束标记,而不是最后一个字节。 1. `例6.4, (3)`:tell 方法确认了'''已经移到当前文件位置'''。[[BR]] |
Line 35: | Line 36: |
1. ''例6.4, (4)'':我们本可以在这里简单地说'''一下''' {X} read(),…… | 1. `例6.4, (4)`:我们本可以在这里简单地说'''一下''' {X} read(),…… |
Line 37: | Line 38: |
1. ''Para 1'':打开文件消耗系统资源,并且'''依赖于文件模式,其它程序或许不能访问它们'''。[[BR]] | 1. `Para 1`:打开文件消耗系统资源,并且'''依赖于文件模式,其它程序或许不能访问它们'''。[[BR]] |
Line 39: | Line 40: |
1. ''例6.5, (1)'':……'''打开文件要消耗系统资源,并且根据文件模式,其它程序可能不能使用它们。'''……[[BR]] | 1. `例6.5, (1)`:……'''打开文件要消耗系统资源,并且根据文件模式,其它程序可能不能使用它们。'''……[[BR]] |
Line 42: | Line 43: |
1. ''例6.5, (2)'':刷新被缓冲的系统'''确实''' {X} 还未写入的输出(如果有的话),…… 1. ''例6.5, (4)'':'''只是因为'''文件被关闭,并不意味着文件对象'''停止'''存在。[[BR]] |
1. `例6.5, (2)`:刷新被缓冲的系统'''确实''' {X} 还未写入的输出(如果有的话),…… 1. `例6.5, (4)`:'''只是因为'''文件被关闭,并不意味着文件对象'''停止'''存在。[[BR]] |
Line 46: | Line 47: |
1. ''例6.6, (5)'':一旦文件通过 open 函数被成功地打开,我们应该绝对保证把它关闭,'''甚至由于''' seek 或 read 方法引发了一个异常。[[BR]] | 1. `例6.6, (5)`:一旦文件通过 open 函数被成功地打开,我们应该绝对保证把它关闭,'''甚至由于''' seek 或 read 方法引发了一个异常。[[BR]] |
Line 48: | Line 49: |
1. ''例6.6, (6), Line -1'':……并且处理将正常继续,从 tryexcept 块的下一行代码 {i} ^开始^。 | 1. `例6.6, (6), Line -1'':……并且处理将正常继续,从 tryexcept 块的下一行代码 {i} ^开始^。 |
Line 50: | Line 51: |
1. ''Para 2, 3'':"Append" 模式将数据追加到文件尾。[[BR]] | 1. `Para 2, 3`:"Append" 模式将数据追加到文件尾。[[BR]] |
Line 55: | Line 56: |
1. ''例6.7, (1)'':你可以大胆地开始创建'''任何的''' {X} 新文件 test.log 或覆盖现有文件,…… 1. ''例6.7, (3)'':file 是 open 的同义语。'''它用一行'''打开文件,读取内容,并打印它们。[[BR]] |
1. `例6.7, (1)`:你可以大胆地开始创建'''任何的''' {X} 新文件 test.log 或覆盖现有文件,…… 1. `例6.7, (3)`:file 是 open 的同义语。'''它用一行'''打开文件,读取内容,并打印它们。[[BR]] |
Line 58: | Line 59: |
1. ''例6.7, (5)'':……同时注意'''回车符并没包含进来'''。[[BR]] | 1. `例6.7, (5)`:……同时注意'''回车符并没包含进来'''。[[BR]] |
Line 63: | Line 64: |
1. ''例6.8, (2)'':for 循环可以'''在它里面有'''任意'''条数'''的代码行。[[BR]] | 1. `例6.8, (2)`:for 循环可以'''在它里面有'''任意'''条数'''的代码行。[[BR]] |
Line 66: | Line 67: |
1. ''例6.8, (3)'':这就是'''为什么'''你以前没看到过 for 循环的原因:…… (!) 与后面的“原因”重复了。 (./) 删去 1. ''例6.10, (3)'':使用 多变量赋值 和 list 解析,你可以使用单行语句来替换整个 for 循环。在实际的编码中是否这样做只是个人风格问题;我喜欢它是因为,'''可以使得''' {X} 将一个 dictionary 映射到一个 list,然后将 list 合并成一个字符串,这一过程显得很清晰。 1. ''例6.11, (1)'':'''一旦'''我们读出文件最后 128 个字节,第 3 到 32 字节总是歌曲的名字,……[[BR]] |
1. `例6.8, (3)`:这就是'''为什么'''你以前没看到过 for 循环的原因:…… (!) 与后面的“原因”重复了。 (./) 删去 1. `例6.10, (3)`:使用 多变量赋值 和 list 解析,你可以使用单行语句来替换整个 for 循环。在实际的编码中是否这样做只是个人风格问题;我喜欢它是因为,'''可以使得''' {X} 将一个 dictionary 映射到一个 list,然后将 list 合并成一个字符串,这一过程显得很清晰。 1. `例6.11, (1)`:'''一旦'''我们读出文件最后 128 个字节,第 3 到 32 字节总是歌曲的名字,……[[BR]] |
Line 70: | Line 71: |
1. ''例6.11, (2)'':'''这个''' <!> for 变量结构…… (./) '''这里的''' 1. ''例6.11, (3)'':……,接着将 parseFunc {i} ^的返回值^ 作为值赋值给伪字典 self 中的键字 tag。[[BR]] |
1. `例6.11, (2)`:'''这个''' <!> for 变量结构…… (./) '''这里的''' 1. `例6.11, (3)`:……,接着将 parseFunc {i} ^的返回值^ 作为值赋值给伪字典 self 中的键字 tag。[[BR]] |
Line 75: | Line 76: |
1. ''例6.12, (1)'':'''这个''' {X} sys 模块包含了系统级的信息,…… 1. ''例6.14, (1)'':每个 python 类 {i} ^都^ 拥有一个内置的 类属性 `__module__`,…… 1. ''例6.15, (3)'':hasattr 是一个补充性的函数,用来检查'''是否一个对象具有'''一个特别的属性;……[[BR]] |
1. `例6.12, (1)`:'''这个''' {X} sys 模块包含了系统级的信息,…… 1. `例6.14, (1)`:每个 python 类 {i} ^都^ 拥有一个内置的 类属性 `__module__`,…… 1. `例6.15, (3)`:hasattr 是一个补充性的函数,用来检查'''是否一个对象具有'''一个特别的属性;……[[BR]] |
Line 81: | Line 82: |
1. ''例6.16, (2)'':ospath 的 join 函数'''用'''一个或多个部分路径名'''构造'''成一个路径名。[[BR]] | 1. `例6.16, (2)`:ospath 的 join 函数'''用'''一个或多个部分路径名'''构造'''成一个路径名。[[BR]] |
Line 83: | Line 84: |
1. `例6.16, (3)`:当'''我''' {X} 发现这一点时我高兴极了,…… |
7-11<X6> fileinfo.xml 异常和文件处理
TableOfContents 本章的修订参考了某人放在项目主页上的反馈。请看到此页后在此加上自己的名字,谢谢!
异常处理
列举下:在这些情况下,我们都在简单使用 Python IDE:一个错误发生了,异常被打印出来(根据你的 IDE,有意地以一种刺眼的红色形式表示)BR
在这些情况下,我们都在简单地使用 Python IDE:一个错误发生了,异常被打印出来 (取决于你的 IDE,可能会有意地以一种刺眼的红色形式表示)
下一段:但是许多时候,一个异常是可以预计
的……
预见
`例 6.1 下, Para 1:Would you rather get back an unusable file object to a non-existent file?BR 你希望获得一个没有用的文件对象而不是一个不存在的文件吧?BR
注意这里的to,不是表比较,而是引导object的定语,表指向(这样的用法很常见,eg. a pointer to an integer)BR
你该不会希望获得一个指向不存在的文件的对象吧?
例6.2, (1):termios 是一个 UNIX 特定模块BR
termios 是一个特定的 UNIX 模块
例6.2, (2):……它是一个 Windows 特定模块BR
它是一个特定的 Windows 模块
例6.2, (3):它是一个 Mac OS 特定模块BR
它是一个特定的 Mac OS 模块
例6.2, (4):……注意,我们在这里做的:……
注意我们在这里所做的:……
例6.2, (5):一处样式错误。还请参见源文件。
`例6.2, (5), Line -1:BR Each of the other try...except blocks has similar else clauses to bind getpass to the appropriate function when you find an import that works.BR 其它每个 try...except 块有着相似的 else 子句,当我们找到一个 import 可用时,来绑定 getpass 到适合的函数。BR
其它每个 try...except 块有着相似的 else 子句,当我们发现一个 import 可用时,就绑定 getpass 到适合的函数。
与文件对象共事
作名词短语的打开文件
一律改为
被打开文件。
读取文件
Para 1:……正如下一个例子所显示
的。
展示
例6.4, (2):0 表示移动到一个绝对位置(从文件开始算起),0 表示移到一个相对位置(从当前位置算起),还有 2 表示对于文件尾的一个相对位置。BR 0 表示移动到一个绝对位置(从文件起始处算起),1 表示移到一个相对位置(从当前位置算起),还有 2 表示相对于文件尾的位置。
`同上:添加了译注,说明了“文件尾”指的是文件的结束标记,而不是最后一个字节。
例6.4, (3):tell 方法确认了已经移到当前文件位置。BR
有必要和 例6.4, (5) 里面的用词保持一致(原文可是一致的)。BR
tell 方法确认了当前位置已经移动了。
例6.4, (4):我们本可以在这里简单地说一下
read(),……
关闭文件
Para 1:打开文件消耗系统资源,并且依赖于文件模式,其它程序或许不能访问它们。BR
打开文件消耗系统资源,并且其间其它程序可能无法访问它们(取决于文件模式)。
例6.5, (1):……打开文件要消耗系统资源,并且根据文件模式,其它程序可能不能使用它们。……BR %^$#@?!!原文可没有把上文重复一次啊BR
删去!
例6.5, (2):刷新被缓冲的系统确实
还未写入的输出(如果有的话),……
例6.5, (4):只是因为文件被关闭,并不意味着文件对象停止存在。BR
文件被关闭了,但这并不意味着文件对象不再存在。
处理 I/O 错误
例6.6, (5):一旦文件通过 open 函数被成功地打开,我们应该绝对保证把它关闭,甚至由于 seek 或 read 方法引发了一个异常。BR
……'即使是在 seek 或 read 方法引发了一个异常时。
`例6.6, (6), Line -1:……并且处理将正常继续,从 tryexcept 块的下一行代码
开始。
写入文件
Para 2, 3:"Append" 模式将数据追加到文件尾。BR "write" 模式将覆盖文件的原有内容。BR
有必要交代一下中文含义。BR
追加(Append)模式将数据追加到文件尾。BR 写入(write)模式将覆盖文件的原有内容。
例6.7, (1):你可以大胆地开始创建任何的
新文件 test.log 或覆盖现有文件,……
例6.7, (3):file 是 open 的同义语。它用一行打开文件,读取内容,并打印它们。BR
……这一行语句打开文件,读取内容,并打印它们。
for 循环
例6.8, (2):for 循环可以在它里面有任意条数的代码行。BR
前者不符合中文表达习惯;“条数”和“代码行”有重复之嫌。BR
for 循环可以包含任意数目的代码行。
例6.8, (3):这就是为什么你以前没看到过 for 循环的原因:……
与后面的“原因”重复了。
删去
例6.10, (3):使用 多变量赋值 和 list 解析,你可以使用单行语句来替换整个 for 循环。在实际的编码中是否这样做只是个人风格问题;我喜欢它是因为,可以使得
将一个 dictionary 映射到一个 list,然后将 list 合并成一个字符串,这一过程显得很清晰。
例6.11, (1):一旦我们读出文件最后 128 个字节,第 3 到 32 字节总是歌曲的名字,……BR
只要我们读出文件最后 128 个字节,那么第 3 到 32 字节总是歌曲的名字,……
例6.11, (2):这个
for 变量结构……
这里的
例6.11, (3):……,接着将 parseFunc
的返回值 作为值赋值给伪字典 self 中的键字 tag。BR (!)根据上下文来看,这里指的是返回值。
使用 sys.modules
例6.12, (1):这个
sys 模块包含了系统级的信息,……
例6.14, (1):每个 python 类
都 拥有一个内置的 类属性 __module__,……
例6.15, (3):hasattr 是一个补充性的函数,用来检查是否一个对象具有一个特别的属性;……BR
用来检查一个对象是否具有一个特定的属性……
与 Directory 共事
例6.16, (2):ospath 的 join 函数用一个或多个部分路径名构造成一个路径名。BR
ospath 的 join 函数把一个或多个部分路径名连接成一个路径名。
例6.16, (3):当我
发现这一点时我高兴极了,……
全部放在一起