Python文件I / O


本章介绍了Python中可用的所有基本I / O函数。有关更多功能,请参考标准Python文档。

打印到屏幕


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

#!/usr/bin/python

print "Python is really a great language,", "isn't it?"

这会在你的标准屏幕上产生以下结果:

Python is really a great language, isn't it?

读取键盘输入


Python提供了两个内置函数来从标准输入中读取一行文本,默认情况下,这些输入来自键盘。这些功能是:

  • raw_input
  • input

The raw_input Function


The raw_input([提示]) 函数从标准输入中读取一行,并将其作为字符串返回(删除尾随的换行符)。

#!/usr/bin/python

str = raw_input("Enter your input: ")
print "Received input is : ", str

这提示你输入任何字符串,并且它将在屏幕上显示相同的字符串。当我输入“ Hello Python!”时,其输出如下:

Enter your input: Hello Python
Received input is :  Hello Python

The input Function


The 输入([提示]) 函数等效于raw_input,不同之处在于它假定输入是有效的Python表达式并将评估结果返回给你。

#!/usr/bin/python

str = input("Enter your input: ")
print "Received input is : ", str

根据输入的输入,将产生以下结果:

Enter your input: [x*5 for x in range(2,10,2)]
Recieved input is :  [10, 20, 30, 40]

打开和关闭文件


到目前为止,你一直在读取和写入标准输入和输出。现在,我们将看到如何使用实际数据文件。

Python提供了默认情况下处理文件所必需的基本功能和方法。你可以使用 file object.

The open Function


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

语法

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

以下是参数详细信息:

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

  • access_mode :access_mode确定必须打开文件的模式,即读取,写入,追加等。下表中给出了可能值的完整列表。这是可选参数,默认文件访问模式为(r)。

  • 缓冲 :如果将缓冲值设置为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+

打开一个文件,以便以二进制格式追加和读取。如果文件存在,则文件指针位于文件的末尾。该文件以追加模式打开。如果该文件不存在,它将创建一个用于读取和写入的新文件。

The file Object Attributes


打开文件后,你将拥有一个 file 对象,你可以获得与该文件有关的各种信息。

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

序号 属性和说明
1

file.closed

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

2

文件模式

返回打开文件的访问方式。

3

文件名

返回文件名。

4

file.softspace

如果print明确要求空间,则返回false,否则返回true。

#!/usr/bin/python

# Open a file
fo = open("foo.txt", "wb")
print "Name of the file: ", fo.name
print "Closed or not : ", fo.closed
print "Opening mode : ", fo.mode
print "Softspace flag : ", fo.softspace

这将产生以下结果:

Name of the file:  foo.txt
Closed or not :  False
Opening mode :  wb
Softspace flag :  0

The close() Method


a的close()方法 file 对象将刷新所有未写的信息并关闭文件对象,此后将无法再进行写操作。

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

语法

fileObject.close()
#!/usr/bin/python

# Open a file
fo = open("foo.txt", "wb")
print "Name of the file: ", fo.name

# Close opend file
fo.close()

这将产生以下结果:

Name of the file:  foo.txt

读写文件


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

The write() Method


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

write()方法不会在字符串末尾添加换行符('\ n'):

语法

fileObject.write(string)

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

#!/usr/bin/python

# Open a file
fo = open("foo.txt", "wb")
fo.write( "Python is a great language.\nYeah its great!!\n")

# Close opend file
fo.close()

上面的方法会创建 foo.txt 文件,并将给定的内容写入该文件,最后它将关闭该文件。如果你打开此文件,它将具有以下内容。

Python is a great language.
Yeah its great!!

The read() Method


The read() 方法从打开的文件中读取字符串。重要的是要注意Python字符串可以具有二进制数据。除了文本数据。

语法

fileObject.read([count])

此处,传递的参数是要从打开的文件读取的字节数。此方法从文件的开头开始读取,如果 count 丢失,那么它将尝试读取尽可能多的内容,也许直到文件末尾。

让我们取一个文件 foo.txt ,是我们在上面创建的。

#!/usr/bin/python

# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10);
print "Read String is : ", str
# Close opend file
fo.close()

这将产生以下结果:

Read String is :  Python is

文件位置


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

The seek(offset [,from]) 方法更改当前文件位置。这 offset 参数指示要移动的字节数。这 from 参数指定要从中移动字节的参考位置。

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

让我们取个文件 foo.txt ,是我们在上面创建的。

#!/usr/bin/python

# Open a file
fo = open("foo.txt", "r+")
str = fo.read(10)
print "Read String is : ", str

# Check current position
position = fo.tell()
print "Current file position : ", position

# Reposition pointer at the beginning once again
position = fo.seek(0, 0);
str = fo.read(10)
print "Again read String is : ", str
# Close opend file
fo.close()

这将产生以下结果:

Read String is :  Python is
Current file position :  10
Again read String is :  Python is

重命名和删除文件


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

要使用此模块,你需要先将其导入,然后才能调用任何相关函数。

named()方法


The rename() 方法采用两个参数,当前文件名和新文件名。

语法

os.rename(current_file_name, new_file_name)

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

#!/usr/bin/python
import os

# Rename a file from test1.txt to test2.txt
os.rename( "test1.txt", "test2.txt" )

The remove() Method


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

语法

os.remove(file_name)

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

#!/usr/bin/python
import os

# Delete file test2.txt
os.remove("text2.txt")

Python目录


所有文件都包含在各个目录中,Python也没有问题。这 os 模块有几种方法可以帮助你创建,删除和更改目录。

The mkdir() Method


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

语法

os.mkdir("newdir")

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

#!/usr/bin/python
import os

# Create a directory "test"
os.mkdir("test")

The chdir() Method


你可以使用 chdir() 更改当前目录的方法。 chdir()方法采用一个参数,该参数是你要创建当前目录的目录的名称。

语法

os.chdir("newdir")

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

#!/usr/bin/python
import os

# Changing a directory to "/home/newdir"
os.chdir("/home/newdir")

The getcwd() Method


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

语法

os.getcwd()

以下是给出当前目录的示例:

#!/usr/bin/python
import os

# This would give location of the current directory
os.getcwd()

The rmdir() Method


The rmdir() 方法删除目录,该目录作为方法中的参数传递。

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

语法

os.rmdir('dirname')

以下是删除“ / tmp / test”目录的示例。必须提供目录的完全限定名称,否则它将在当前目录中搜索该目录。

#!/usr/bin/python
import os

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

文件和目录相关方法


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

  • 文件对象方法 : The file 对象提供了操作文件的功能。

  • 操作系统对象方法 :这提供了处理文件和目录的方法。