前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >小朋友学Python(17):文件

小朋友学Python(17):文件

作者头像
海天一树
发布2018-04-17 11:53:03
7960
发布2018-04-17 11:53:03
举报
文章被收录于专栏:海天一树海天一树

Python 提供了必要的函数和方法进行默认情况下的文件基本操作。你可以用 file 对象做大部分的文件操作。

一、打开和关闭文件

例1

(1)创建名为test1.txt的文件,内容为 This is a test file. (2)在同一目录下新建file1.py文件,内容如下

代码语言:javascript
复制
file = open("test1.txt", "wb")
print "File name: ", file.name
print "Access mode: ", file.mode
print "Closed or not? ", file.closed
file.close()
print "Closed or not? ", file.closed

运行结果:

代码语言:javascript
复制
File name: test1.txt
Access mode: wb
Closed or not? False
Closed or not? True

说明:

(一)open 函数

你必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写。

语法: file object = open(file_name [, access_mode][, buffering])

各个参数的细节如下: (1)file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。 (2)access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。下表是这些模式的总结。

模式 |描述 -------|- r |以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 rb |以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 r+ |打开一个文件用于读写。文件指针将会放在文件的开头。 rb+ |以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 w |打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 wb |以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 w+ |打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 wb+ |以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 a |打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 ab |以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 a+ |打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 ab+ |以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

(3)buffering: 是一个可选的参数,用来表示缓冲区的策略选择。设置为0时,表示不使用缓冲区,直接读写,仅在二进制模式下有效。设置为1时,表示在文本模式下使用行缓冲区方式。设置为大于1时,表示缓冲区的设置大小。如果参数buffering没有给出,使用默认时,会采用下面策略来选择: ① 对于二进制文件模式时,采用固定块内存缓冲区方式,内存块的大小根据系统设备的分配的磁盘块来决定,如果获取系统磁盘块的大小失败,就使用内部常量io.DEFAULT_BUFFER_SIZE定义的大小。一般的操作系统上,块的大小是4096或者8192字节大小。 ② 对于交互的文本文件(采用isatty()判断为True)时,采用一行缓冲区的方式。其它文本文件使用跟二进制一样的方式。

(二)File对象的属性

一个文件被打开后,你有一个file对象,你可以得到有关该文件的各种信息。 以下是和file对象相关的所有属性的列表:

属性

描述

file.closed

返回true如果文件已被关闭,否则返回false。

file.mode

返回被打开文件的访问模式。

file.name

返回文件的名称。

(三)close()方法

close()方法方法关闭打开的文件。关闭的文件无法读取或写入更多东西。文件已被关闭之后任何操作都会引发ValueError。但是调用close()多次是可以的。 当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。 用 close()方法关闭文件是一个很好的习惯。

二、读取文件内容

例2

代码语言:javascript
复制
file = open("test1.txt", "r+")
content = file.read(10)
print content
file.close()

运行结果:

代码语言:javascript
复制
This is a

read()方法

read()方法从一个打开的文件中读取一个字符串。需要重点注意的是,Python字符串可以是二进制数据,而不仅仅是文字。

语法: fileObject.read([count]);

在这里,被传递的参数是要从已打开文件中读取的字节计数。该方法从文件的开头开始读入,如果没有传入count,它会尝试尽可能多地读取更多的内容,很可能是直到文件的末尾。

三、写入文件

例3

代码语言:javascript
复制
file = open("test2.txt", "wb")
file.write( "I like study Python.");
file.close()

运行结果:

代码语言:javascript
复制
生成test2.txt,并向其写入
I like study Python.

说明:

write()方法

write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不仅仅是文字。 write()方法不会在字符串的结尾添加换行符('\n'):

语法: fileObject.write(string); 在这里,被传递的参数是要写入到已打开文件的内容。

四、文件定位

例4

代码语言:javascript
复制
file = open("test1.txt", "r+")
content = file.read(10);
print content
position = file.tell();
print "Current positon: ", position
position = file.seek(0, 0);
content = file.read(5);
print content
position = file.tell();
print "Current positon: ", position
file.close()

运行结果:

代码语言:javascript
复制
This is a
Current position: 10
This
Current position: 5

说明:

(一)tell()方法

告诉你文件内的当前位置;换句话说,下一次的读写会发生在文件开头这么多字节之后。

(二)seek(offset [,from])方法

改变当前文件的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。 如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。

五、重命名和删除文件

Python的os模块提供了帮你执行文件处理操作的方法,比如重命名和删除文件。 要使用这个模块,你必须先导入它,然后才可以调用相关的各种功能。

rename()方法

rename()方法需要两个参数,当前的文件名和新文件名。

语法: os.rename(current_file_name, new_file_name)

例5

代码语言:javascript
复制
import os
os.rename( "test1.txt", "test5.txt" )

remove()方法

你可以用remove()方法删除文件,需要提供要删除的文件名作为参数。

语法: os.remove(file_name)

例6

代码语言:javascript
复制
import os
os.remove("test5.txt")

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-02-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 海天一树 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、打开和关闭文件
    • 例1
      • (一)open 函数
        • (二)File对象的属性
          • (三)close()方法
            • 例2
        • 二、读取文件内容
          • read()方法
            • 例3
        • 三、写入文件
          • write()方法
            • 例4
        • 四、文件定位
          • (一)tell()方法
            • (二)seek(offset [,from])方法
            • 五、重命名和删除文件
              • rename()方法
                • 例5
              • remove()方法
                • 例6
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档