专栏首页海天一树小朋友学Python(17):文件

小朋友学Python(17):文件

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

一、打开和关闭文件

例1

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

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

运行结果:

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

file = open("test1.txt", "r+")
content = file.read(10)
print content
file.close()

运行结果:

This is a

read()方法

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

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

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

三、写入文件

例3

file = open("test2.txt", "wb")
file.write( "I like study Python.");
file.close()

运行结果:

生成test2.txt,并向其写入
I like study Python.

说明:

write()方法

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

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

四、文件定位

例4

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()

运行结果:

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

import os
os.rename( "test1.txt", "test5.txt" )

remove()方法

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

语法: os.remove(file_name)

例6

import os
os.remove("test5.txt")

本文分享自微信公众号 - 海天一树(gh_de7b45c40e8b),作者:海天一树

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2018-02-07

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 小朋友学C++(20):内联函数

    第(2)种方法比第(1)种方法,有三个优点: ① 阅读和理解函数 max 的调用,要比读一条等价的条件表达式并解释它的含义要容易得多 ② 如果需要做任何修改,修...

    海天一树
  • NOIP 2018提高组初赛C/C++答案详解

    分析: 二进制化八进制:从低位(右)往高位(左),每三位直接换成八进制即可。 (1001101011)2 = (10 0110 1011)2 = (26B)...

    海天一树
  • 小朋友学奥数(21):康托展开

    把一个整数X展开成如下形式: X = an * (n - 1)! + an-1 * (n - 2)! + … + ai * (i - 1)! + … + a2 ...

    海天一树
  • Python基础(14)——文件

    使用with来管理上下文 with会打开文件将文件对象赋值给file_obj,然后在执行完子代码块的文件操作后自动调用file_obj.close()方法。

    羊羽shine
  • rsync 客户端命令详解

    rsync客户端参数的具体解释如下: -v, --verbose 详细模式输出 -q, --quiet 精简输出模式 -c, --checksum 打开...

    一见
  • 每天 3 分钟,小闫带你学 Python(二十四)

    Life isn’t about finding yourself. Life is about creating yourself.

    小闫同学啊
  • (56) 文件概述 / 计算机程序的思维逻辑

    我们在日常电脑操作中,接触和处理最多的,除了上网,大概就是各种各样的文件了,从本节开始,我们就来探讨文件处理,本节主要介绍文件有关的一些基本概念和常识,Java...

    swiftma
  • Python 文件操作

    一份执着✘
  • Python 文件I/O

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

    Python知识大全
  • 【折腾不止】前端工程与性能优化

    作者:addy(许斌),前端开发工程师,文艺青年一枚,写得了文章,编得了代码。 作为开发,不仅仅是前端,优化总是你绕不开的事,我们的目标就是要产品变得更快。优化...

    腾讯大讲堂

扫码关注云+社区

领取腾讯云代金券