习题 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

开一个网上时时彩平台 好运时时彩 重庆时时彩的计划软件 加盟时时彩代理平台 时时彩杀号等于01
万威时时彩软件下载 甘肃时时彩开奖结果 江西时时彩官网皇恩娱乐 新澳门银座wztd188 时时彩软件平刷王
重庆时时彩刷水 精彩趋势时时彩软件 时时彩源码出售 大赢家时时彩平台 重庆时时彩被黑客攻击
全天时时彩计划免费群 必赢客有手机版本吗 助赢时时彩软件手机版 重庆时时彩平台手机版 新宝时时彩平台
山东11选5技巧 北京赛车pk10开奖记录 浙江体彩20选5 大神吧幸运28 幸运飞艇官方网站
海南环岛赛彩票技巧 湖北11选5号码遗漏 云南十一选五软件下载 双色球字谜汇总 下载今天青海快3走势图
江苏7位数开奖历史 至尊汇 安徽快三时时彩 宁夏11选5遗漏 排列5开奖结果查询
北京赛车pk10搜狐 江苏十一选五 038期香港六合彩开奖 pk10开奖直播官网 浙江12选5走势图