《笨办法学Python》笔记13-----读取文件

raw_input 和 argv 是操作文件的基础,不熟悉的需要回到上节继续练习。

一、代码分析

#coding:utf-8

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() #读取文件

这里有两个新函数open() 和 read()。

首先在命令行下使用帮助,查看两个函数的信息

1.open( )

E:\lszyy\python\examples>python -m pydoc open

Help on built-in function open in module __builtin__:

open(…)

open(name[, mode[, buffering]]) -> file object

Open a file using the file() type, returns a file object.  This is the

preferred way to open a file.  See file.__doc__ for further information.

注意open( )函数的参数,文件名是必须的,打开模式,缓冲区是可选的。

返回一个文件对象,以便后续对文件进行操作,相当于一个指向文件的指针。

2.read( )

E:\lszyy\python\examples>python -m pydoc read

no Python documentation found for ‘read’

这样查没有任何信息,需输入以下命令查询read函数的帮助信息

E:\lszyy\python\examples>python -m pydoc file

按回车键,直到看到read函数的信息:

|  read(…)

    read([size]) -> read at most size bytes, returned as a string.

|      If the size argument is negative or omitted, read until EOF is reached.

|      Notice that when in non-blocking mode, less data than what was requested

|      may be returned, even if no size parameter was given.

read函数有个最大字节数的参数,返回一个字符串。

如果参数没有给出,read直到EOF标志出现。在非阻塞模式下,即使没有给出size参数,返回的数据可能少于请求的数据。

何谓非阻塞模式?

运行代码,输入一个不存在的文件名,将获得一个IO异常(IOError)

E:\lszyy\python\examples>python test4.py t.txt                                               Traceback (most recent call last):  File “test4.py”, line 5, intxt = open(filename)

IOError: [Errno 2] No such file or directory: ‘t.txt’

新建一个文本测试文件:t.txt,输入一些测试字符“123456789abcdefghijklmnopqrstuvwxyz”.

E:\lszyy\python\examples>python test4.py t.txt

Here’s your file ‘t.txt’:

123456789abcdefghijklmnopqrstuvwxyz

Type the filename again:

> t.txt

123456789abcdefghijklmnopqrstuvwxyz

二、open函数中的mode参数

读写模式的类型有:

r      以读方式打开, 同时提供通用换行符支持 (PEP 278)

w     以写方式打开,

a     以追加模式打开 (从 EOF 开始, 必要时创建新文件)

r+     以读写模式打开

w+     以读写模式打开 (参见 w )

a+     以读写模式打开 (参见 a )

rb     以二进制读模式打开

wb     以二进制写模式打开 (参见 w )

ab     以二进制追加模式打开 (参见 a )

rb+    以二进制读写模式打开 (参见 r+ )

wb+    以二进制读写模式打开 (参见 w+ )

ab+    以二进制读写模式打开 (参见 a+ )

注意:

1、使用’W’,文件若存在,首先要清空,然后(重新)创建,

2、使用’a’模式 ,把所有要写入文件的数据都追加到文件的末尾,即使你使用了seek()指向文件的其他地方,如果文件不存在,将自动被创建。

    原文作者:大猫黄
    原文地址: https://www.jianshu.com/p/f823d6cf3f4b
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞