个性化阅读
专注于IT技术分析

python文件IO操作完全解读 – Python入门开发教程

上一章Python教程请查看:python模块介绍和操作

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

1、打印到屏幕

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

#!/usr/bin/python

print "I like Spanish, ", "It is really great!"

2、读取键盘输入

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

  • raw_input
  • input

3、raw_input函数

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

#!/usr/bin/python

str = raw_input("输入: ")
print "获取的输入 : ", str

这将提示你输入任何字符串,它将在屏幕上显示相同的字符串。

4、input函数

input([prompt])函数等价于raw_input,只是它假设输入是一个有效的Python表达式,并将计算后的结果返回给你。

#!/usr/bin/python

str = input("输入: ")
print "获取输入 : ", str

5、打开和关闭文件

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

默认情况下Python提供了操作文件所需的基本函数和方法,可以使用file对象完成大多数文件操作。

6、open函数

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

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

这里是参数细节:

  • file_name参数是一个字符串值,它包含要访问的文件的名称。
  • access_mode—access_mode决定文件必须打开的模式,即、读、写、附加等。下表给出了可能值的完整列表。这是一个可选参数,默认的文件访问模式是read (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+ 以二进制格式为附加和读取打开一个文件。如果文件存在,则文件指针位于文件的末尾。文件以追加模式打开。如果该文件不存在,它将创建一个用于读写的新文件。

7、文件对象属性

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

这里列出了所有与file对象相关的属性

编号 属性和说明
1 file.closed 如果文件关闭,返回true,否则返回false。
2 file.mode 返回打开文件的访问模式。
3 file.name 返回文件的名称。
4 file.softspace 如果print显式需要空格,则返回false,否则返回true。
#!/usr/bin/python

# 打开文件
fo = open("foo.txt", "wb")
print "文件的名称: ", fo.name
print "是否已打开 : ", fo.closed
print "打开模式 : ", fo.mode
print "Softspace flag : ", fo.softspace

8、close()方法

file对象的close()方法清除所有未写的信息并关闭file对象,之后就不能再进行写操作了。

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

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

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

# 关闭文件
fo.close()

9、读写文件

file对象提供了一组访问方法来简化我们的工作,我们将看到如何使用read()和write()方法来读写文件。

10、write()方法

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

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

fileObject.write(string)

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

#!/usr/bin/python

# 打开文件
fo = open("foo.txt", "wb")
fo.write( "Hello\nHola\n")

# 关闭文件
fo.close()

上面的方法将创建foo.txt文件,并在该文件中写入给定的内容,最后关闭该文件。

11、read方法()

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

fileObject.read([count])

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

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

#!/usr/bin/python

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

12、文件位置

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

seek(offset[, from])方法更改当前文件的位置,偏移量参数表示要移动的字节数,from参数指定要移动字节的引用位置。

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

以文件foo为例,我们在上面创建的txt。

#!/usr/bin/python

# 打开文件
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()

13、重命名和删除文件

Python os模块提供了一些方法来帮助你执行文件处理操作,比如重命名和删除文件。

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

14、rename()方法

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

#!/usr/bin/python
import os

# 从test1.txt更改为test2.txt
os.rename( "test1.txt", "test2.txt" )

15、remove()方法

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

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

#!/usr/bin/python
import os

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

16、Python中的目录

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

17、mkdir()方法

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

下面是在当前目录中创建目录测试的示例

#!/usr/bin/python
import os

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

18、chdir()方法

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

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

#!/usr/bin/python
import os

# 进入"/home/newdir"
os.chdir("/home/newdir")

19、getcwd()方法

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

下面是给出当前目录的示例

#!/usr/bin/python
import os

# 这将给出当前目录的位置
os.getcwd()

20、rmdir()方法

方法的作用是删除作为方法参数传递的目录。

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

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

#!/usr/bin/python
import os

# 删除 "/tmp/test" 目录.
os.rmdir( "/tmp/test"  )

21、文件和目录相关的方法

有三个重要的源代码,它们提供了各种各样的实用方法来处理和操作Windows和Unix操作系统上的文件和目录:

  • File对象方法:File对象提供操作文件的函数。
  • OS对象方法:提供处理文件和目录的方法。
赞(0)
未经允许不得转载:srcmini » python文件IO操作完全解读 – Python入门开发教程

评论 抢沙发

评论前必须登录!