习题 15: 读取文件?

你已经学过了 raw_inputargv,这些是你开始学习读取文件的必备基础。你可能需要多多实验才能明白它的工作原理,所以你要细心做练习,并且仔细检查结果。处理文件需要非常仔细,如果不仔细的话,你可能会吧有用的文件弄坏或者清空。导致前功尽弃。

这节练习涉及到写两个文件。一个正常的 ex15.py 文件,另外一个是 ex15_sample.txt,第二个文件并不是脚本,而是供你的脚本读取的文本文件。以下是后者的内容:

This is stuff I typed into a file.
It is really cool stuff.
Lots and lots of fun to have in here.

我们要做的是把该文件用我们的脚本“打开(open)”,然后打印出来。然而把文件名ex15_sample.txt 写死(hardcode)在代码中不是一个好主意,这些信息应该是用户输入的才对。如果我们碰到其他文件要处理,写死的文件名就会给你带来麻烦了。我们的解决方案是使用 argvraw_input 来从用户获取信息,时时彩计划软件公式:从而知道哪些文件该被处理。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
from sys import argv

script, filename = argv

txt = open(filename)

print "Here's your file %r:" % filename
print txt.read()

print "Type the filename again:"
file_again = raw_input("> ")

txt_again = open(file_again)

print txt_again.read()

这个脚本中有一些新奇的玩意,我们来快速地过一遍:

代码的 1-3 行使用 argv 来获取文件名,这个你应该已经熟悉了。接下来第 5 行我们看到 open 这个新命令。现在请在命令行运行 pydoc open 来读读它的说明。你可以看到它和你自己的脚本、或者 raw_input 命令类似,它会接受一个参数,并且返回一个值,你可以将这个值赋予一个变量。这就是你打开文件的过程。

第 7 行我们打印了一小行,但在第 8 行我们看到了新奇的东西。我们在 txt 上调用了一个函数。你从 open 获得的东西是一个 file (文件),文件本身也支持一些命令。它接受命令的方式是使用句点 . (英文称作 dot 或者 period),紧跟着你的命令,然后是类似 openraw_input 一样的参数。不同点是:当你说 txt.read 时,你的意思其实是:“嘿 txt!执行你的 read 命令,无需任何参数!”

脚本剩下的部分基本差不多,不过我就把剩下的分析作为加分习题留给你自己了。

你应该看到的结果?

我的脚本叫 “ex15_sample.txt”,以下是执行结果:

$ python ex15.py ex15_sample.txt 
Here's your file 'ex15_sample.txt':
This is stuff I typed into a file.
It is really cool stuff.
Lots and lots of fun to have in here.


Type the filename again:
> ex15_sample.txt
This is stuff I typed into a file.
It is really cool stuff.
Lots and lots of fun to have in here.


$

加分习题?

这节的难度跨越有点大,所以你要尽量做好这节加分习题,然后再继续后面的章节。

  1. 在每一行的上面用注解说明这一行的用途。
  2. 如果你不确定答案,就问别人,或者上网搜索。大部分时候,只要搜索 “python” 加上你要搜的东西就能得到你要的答案。比如搜索一下“python open”。
  3. 我使用了“命令”这个词,不过实际上它们的名字是“函数(function)”和“方法(method)。上网搜索一下这两者的意义和区别。看不明白也没关系,迷失在别的程序员的知识海洋里是很正常的一件事情。
  4. 删掉 10-15 行使用到 raw_input 的部分,再运行一遍脚本。
  5. 只是用 raw_input 写这个脚本,想想那种得到文件名称的方法更好,以及为什么。
  6. 运行 pydoc file 向下滚动直到看见 read() 命令(函数/方法)。看到很多别的命令了吧,你可以找几条试试看。不需要看那些包含 __ (两个下划线)的命令,这些只是垃圾而已。
  7. 再次运行 python 在命令行下使用 open 打开一个文件,这种 open 和 read 的方法也值得你一学。
  8. 让你的脚本针对 txt and txt_again 变量执行一下 close() ,处理完文件后你需要将其关闭,这是很重要的一点。

Project Versions

Table Of Contents

Previous topic

习题 14: 提示和传递

Next topic

习题 16: 读写文件

This Page

重庆时时彩组选走势图 金沙国际骗局 时时彩平台出租价格 ldj时时彩平台 时时彩金子塔
新开时时彩平台 重庆时时彩计划网页 手机时时彩平台出租 时时彩组六包号技巧 时时彩平台怎么赚钱
专业修改时时彩软件 海南省时时彩网络诈骗 时时彩计划平刷王 时时彩五星012走势图 重庆时时彩软件终身版
江西时时彩走势图hg0088gw88 网络时时彩黑彩违法吗 时时彩杀号定胆软件 时时彩招商主管 江西时时彩漏洞2017
河北11选5前三直最大遗漏 山西11选5走势图一定牛 辽宁快乐12奖金对照表 湖南体彩幸运赛车 浙江11选5技巧任3
秒速赛车开奖统一吗 三分彩计划软件 彩凤凰时时彩软件下载 新疆十一选五的走势图 双色球彩票
贵州11选5遗漏 pk10北京赛车视频 18选7开奖结果查询 阿根廷足球 安徽十一选五号码选择
云南时时彩计划人工计划 码报网址 重庆时时彩不出号 河北11选5专家预测 秒速飞艇是骗局吗