Python 3 – 文件I/O

Python 3 – 文件I/O

本章涵盖了Python 3中所有可用的基本I/O函数。如需更多函数,请参考标准Python文档。

输出到屏幕

生成输出的最简单方法是使用 print 语句,其中可以传递一个或多个用逗号分隔的表达式。该函数将您传递的表达式转换为字符串,并将结果写入标准输出,如下所示 –

#!/usr/bin/python3

print("Python真是一门伟大的语言,是吧?")

在标准屏幕上产生以下结果 –

Python真是一门伟大的语言,是吧?

读取键盘输入

Python 2有两个内置函数可用于从标准输入读取数据,默认情况下来自键盘。这些函数是 input()raw_input()

在Python 3中,raw_input()函数不推荐使用。而且,input()函数读取由引号 (”或””)括起来还是没有括起来的字符串键盘数据,都当做字符串读入。

输入函数

input([prompt]) 函数等同于raw_input函数,唯一不同的是assumes that the input is a valid Python expression and returns the evaluated result to you。

#!/usr/bin/python3

>>> x = input("输入一些东西:")
输入一些东西:10

>>> x
'10'

>>> x = input("输入一些东西:")
输入一些东西:'10' #输入的数据被当作带或不带引号(''或"")的字符串处理

>>> x
"'10'"

打开和关闭文件

到现在为止,您一直在读写标准输入和输出。现在,我们将看到如何使用实际数据文件。Python默认提供了基本函数和方法来操作文件。您可以使用 file 对象执行大多数文件操作。

打开函数

在读写文件之前,必须使用Python的内置open()函数打开文件。此函数创建一个 file 对象,将用于调用与它关联的其他支持方法。

语法

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

以下是参数详情 –

  • file_name - file_name参数是一个字符串值,其中包含您要访问的文件的名称。

  • access_mode - access_mode确定文件必须以哪种模式打开,即读取,写入,附加等。下表中提供了可能的值列表。这是一个可选参数,默认文件访问模式为read(r)。

  • buffering - 如果缓冲区值设置为0,则不执行缓冲。如果缓冲区值为1,则在访问文件时执行行缓冲。如果您将缓冲区值指定为大于1的整数,则使用指定的缓冲区大小执行缓冲操作。如果为负,则缓冲区大小为系统默认值(默认行为)。

下面列出了不同文件打开模式的列表 –

序号 模式与描述
1 r 以只读方式打开一个文件。文件指针将放在文件的开头。这是默认模式。
2 rb 以二进制格式只读方式打开一个文件。文件指针将放在文件的开头。这是默认模式。
3 r+ 打开一个文件进行读写。文件指针将放在文件的开头。
4 rb+ 以二进制格式打开一个文件进行读写。文件指针将放在文件的开头。
5 w 打开一个文件进行写入。如果文件存在则会覆盖文件。如果文件不存在,则会创建一个新的文件进行写入。
6 wb 以二进制格式打开一个文件进行写入。如果文件存在则会覆盖文件。如果文件不存在,则会创建一个新的文件进行写入。
7 w+ 打开一个文件进行读写。如果文件存在则会覆盖已有内容。如果文件不存在,则会创建一个新的文件进行读写。
8 wb+ 以二进制格式打开一个文件进行读写。如果文件存在则会覆盖已有内容。如果文件不存在,则会创建一个新的文件进行读写。
9 a 以追加模式打开一个文件。如果文件存在,则文件指针将会放在文件的结尾处。如果文件不存在,则会创建一个新的文件进行写入。
10 ab 以二进制格式追加模式打开一个文件。如果文件存在,则文件指针将会放在文件的结尾处。如果文件不存在,则会创建一个新的文件进行写入。
11 a+ 以追加模式打开一个文件进行读写。如果文件存在,则文件指针将会放在文件的结尾处。如果文件不存在,则会创建一个新的文件进行读写。
12 ab+ 以二进制格式追加模式打开一个文件进行读写。如果文件存在,则文件指针将会放在文件的结尾处。如果文件不存在,则会创建一个新的文件进行读写。

文件对象属性

一旦打开了一个文件并且有一个 file 对象,你可以获取与该文件相关的各种信息。

下面是与文件对象相关的所有属性列表 −

序号 属性 & 描述
1 file.closed 如果文件已关闭则返回 True,否则返回 False。
2 file.mode 返回文件打开时使用的访问模式。
3 file.name 返回文件的名称。

注意 − 在 Python 3.x 中不支持 softspace 属性。

示例

#!/usr/bin/python3

# 打开一个文件
fo = open("foo.txt", "wb")
print ("文件名为: ", fo.name)
print ("是否已关闭 : ", fo.closed)
print ("访问模式 : ", fo.mode)
fo.close()

这将产生以下结果 –

文件名为:  foo.txt
是否已关闭 :  False
访问模式 :  wb

close() 方法

close() 方法关闭文本文件之前会清除所有未写入的信息,关闭文件对象后,不能再写入任何内容。

当文件对象的引用被重新分配给另一个文件时,Python自动关闭该文件。使用close() 方法关闭文件是一个好的习惯。

语法

fileObject.close();

示例

#!/usr/bin/python3

# 打开一个文件
fo = open("foo.txt", "wb")
print ("文件名为: ", fo.name)

# 关闭已经打开的文件
fo.close()

这将产生以下结果 –

文件名为:  foo.txt

读写文件

文件对象提供了一组访问方法,以使我们的生活更加轻松。我们将看到如何使用 read()write() 方法来读取和写入文件。

write() 方法

write() 方法将任何字符串写入打开的文件。请注意,Python字符串可以具有二进制数据而不仅仅是文本。

write() 方法不会在字符串末尾添加换行符(‘\n’)-

语法

fileObject.write(string);

这里,传递参数是要写入打开文件的内容。

示例

#!/usr/bin/python3

# 打开一个文件
fo = open("foo.txt", "w")
fo.write( "Python是一种伟大的编程语言。\n是的,它是伟大的!!\n")

# 关闭已打开的文件
fo.close()

上面的方法将创建foo.txt文件,写入指定内容,最后将关闭该文件。如果你打开这个文件,则会有以下内容 –

Python是一种伟大的编程语言。
是的,它是伟大的!!

read() 方法

read() 方法从打开的文件中读取一个字符串。请注意,Python字符串可以具有二进制数据。除文本数据外。

语法

fileObject.read([count]);

在这里,传递的参数是要从打开文件中读取的字节数。此方法从文件开头开始读取,如果缺少count,则尝试尽可能多地读取,可能会一直读到文件结尾。

示例

我们来看一下上面创建的文件foo.txt。

#!/usr/bin/python3

# 打开一个文件
fo = open("foo.txt", "r+")
str = fo.read(10)
print ("读取的字符串 : ", str)

# 关闭已打开的文件
fo.close()

这将产生以下结果 –

读取的字符串 :  Python is

文件位置

tell() 方法告诉您文件中的当前位置;换句话说,下一次读取或写入将在文件开头的那么多字节处发生。

seek(offset[, from]) 方法更改当前文件位置。offset参数指示要移动的字节数。源自参数指定从那些字节移动。

如果 from 设置为0,则文件的开头用作参考位置。如果设置为1,则使用当前位置作为参考位置。如果设置为2,则文件的末尾将作为参考位置。

示例

让我们以一个文件 foo.txt 为例,这个文件我们已经在上面创建过了。

#!/usr/bin/python3

# 打开文件
fo = open("foo.txt", "r+")
str = fo.read(10)
print ("读取的字符串是 : ", str)

# 检测当前位置
position = fo.tell()
print ("当前文件位置 : ", position)

# 把指针再次定位到文件开头
position = fo.seek(0, 0)
str = fo.read(10)
print ("再次读取字符串 : ", str)

# 关闭打开的文件
fo.close()

这将产生以下结果 –

读取的字符串是 :  Python is
当前文件位置 :  10
再次读取字符串 :  Python is

重命名和删除文件

Python os 模块提供了帮助您执行文件处理操作的方法,例如重命名和删除文件。

要使用此模块,您需要首先导入它,然后可以调用任何相关函数。

rename()方法

rename() 方法接受两个参数,当前文件名和新文件名。

语法

os.rename(current_file_name, new_file_name)

示例

以下是重命名现有文件 test1.txt 的示例 –

#!/usr/bin/python3
import os

# 将文件test1.txt重命名为test2.txt
os.rename( "test1.txt", "test2.txt" )

remove()方法

您可以使用 remove() 方法通过提供要删除的文件的名称作为参数来删除文件。

语法

os.remove(file_name)

示例

以下是删除现有文件 test2.txt 的示例 –

#!/usr/bin/python3
import os

# 删除文件test2.txt
os.remove("text2.txt")

Python中的目录

所有文件都包含在不同的目录中,Python也没有处理这些目录的问题。os模块有几种方法可帮助您创建、删除和更改目录。

mkdir()方法

您可以使用 mkdir() 方法在当前目录中创建目录。您需要向此方法提供一个参数,其中包含要创建的目录的名称。

语法

os.mkdir("newdir")

示例

以下是在当前目录中创建目录 test 的示例 –

#!/usr/bin/python3
import os

# 创建目录"test"
os.mkdir("test")

chdir()方法

您可以使用 chdir() 方法更改当前目录。chdir()方法接受一个参数,即要将其设置为当前目录的目录的名称。

语法

os.chdir("newdir")

示例

以下是进入“/home/newdir”目录的示例 –

#!/usr/bin/python3
import os

# 将目录更改为“/home/newdir”
os.chdir("/home/newdir")

getcwd()方法

getcwd() 方法显示当前工作目录。

语法

os.getcwd()

示例

以下是提供当前目录的示例 –

#!/usr/bin/python3
import os

# 这将提供当前目录的位置
os.getcwd()

rmdir()方法

rmdir() 方法删除在方法中传递的目录。

在删除目录之前,应该先删除其中的所有内容。

语法

os.rmdir('dirname')

示例

以下是一个删除”/tmp/test”目录的示例。需要给出完全限定的目录名,否则它会在当前目录中搜索该目录。

#!/usr/bin/python3
import os

# This would  remove "/tmp/test"  directory.
os.rmdir( "/tmp/test"  )

文件和目录相关方法

有三个重要来源,提供了处理和操作Windows和Unix操作系统上的文件和目录的实用程序方法。它们如下−

文件对象提供操作文件的函数。

这提供了处理文件以及目录的方法。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程