您的位置:首页 > 编程语言 > Python开发

笨方法学Python 习题 15: 读取文件

2017-07-27 14:07 281 查看
#!usr/bin/python
# -*-coding:utf-8-*-

from sys import argv

script, filename = argv
#获取参数 给script赋值ex15.py filename赋值ex15_sample.txt

txt = open(filename)
#打开 ex15_sample.txt文本

print ("Here's your file %r:" % filename)
#打印 Here's your file ex15_sample.txt
print (txt.read())
#打印 ex15_sample.txt文本内容
print ("I'll also ask you to type it again:")
#打印 I'll also ask you to type it again:
file_again = input("> ")
#输入为file_again赋值
txt_again = open(file_again)
#打开file_again文本
print (txt_again.read())
#打印file_again文本


运行结果如下:

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.

加分习题

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

①在每一行的上面用注解说明这一行的用途。

如果你不确定答案,就问别人,或者上网搜索。大部分时候,只要搜索 “python” 加上你要搜的东西就能得到你要的答案。比如搜索一下“python open”。

我使用了“命令”这个词,不过实际上它们的名字是“函数(function)”和“方法(method)。上网搜索一下这两者的意义和区别。看不明白也没关系,迷失在别的程序员的知识海洋里是很正常的一件事情。

②删掉 10-15 行使用到 raw_input 的部分,再运行一遍脚本。

只是用 raw_input 写这个脚本,想想那种得到文件名称的方法更好,以及为什么。

从个人学习角度,还是input更好用,更加灵活。而且代码更容易被理解。

③运行 pydoc file 向下滚动直到看见 read() 命令(函数/方法)。看到很多别的命令了吧,你可以找几条试试看。不需要看那些包含 __ (两个下划线)的命令,这些只是垃圾而已。

再次运行 python 在命令行下使用 open 打开一个文件,这种 open 和 read 的方法也值得你一学。

让你的脚本针对 txt and txt_again 变量执行一下 close() ,处理完文件后你需要将其关闭,这是很重要的一点。

常见问题回答

txt = open(filename) 返回的是文件的内容吗?

不是,它返回的是一个叫做“file object”的东西,你可以把它想象成一个磁带机或者DVD机。你 可以随意访问内容的任意位置,并且去读取这些内容,不过这个 object 本身并不是它的内容。

我没法再我的 Terminal/PowerShell 命令行下输入 python 代码。

首先,在命令行输入 python 然后敲回车。现在你就在 python 环境中了。接下来你就可以输入并运行一句一句的代码。试着玩玩,如果想退出就输入 quit()再敲回车。

from sys import argv 是什么意思?

现在能告诉你的是, sys 是一个代码库,这句话的意思是从库里取出 argv 这个功能来,供我使用。后面你会学到更多相关知识。

我把文件名写进去写成 script, ex15_sample.txt = argv 不过这样不灵。

这么做是错的。把代码写成和我一模一样,然后从命令行运行,照着我的方式。你不需要把文件名放到代码中,而是让 Python 把文件名当做参数接纳进去。

为什么打开了两次文件没有报错?

Python 不会限制你打开文件的次数,事实上有时候多次打开同一个文件是一件必须的事情。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息