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

上一章Python教程请查看:python模块介绍和操作
本章涵盖了Python中所有可用的基本I/O函数,如需要了解有关更多函数请参阅标准Python文档。
1、打印到屏幕生成输出的最简单方法是使用print语句,在该语句中可以传递零个或多个以逗号分隔的表达式,此函数将你传递的表达式转换为字符串,并将结果写入标准输出如下所示:

#!/usr/bin/pythonprint "I like Spanish, ", "It is really great!"

2、读取键盘输入Python提供了两个内置函数来从标准输入中读取一行文本,默认情况下标准输入来自键盘,这些函数是:
  • raw_input
  • input
3、raw_input函数raw_input([prompt])函数从标准输入中读取一行并将其作为字符串返回(删除尾随的换行)。
#!/usr/bin/pythonstr = raw_input("输入: ") print "获取的输入 : ", str

这将提示你输入任何字符串,它将在屏幕上显示相同的字符串。
4、input函数input([prompt])函数等价于raw_input,只是它假设输入是一个有效的Python表达式,并将计算后的结果返回给你。
#!/usr/bin/pythonstr = 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()方法【python文件IO操作完全解读 – Python入门开发教程】方法的作用是删除作为方法参数传递的目录。
在删除目录之前,应该删除目录中的所有内容。
下面是删除“/tmp/test”目录的示例。需要提供目录的完全限定名,否则将在当前目录中搜索该目录。
#!/usr/bin/python import os# 删除 "/tmp/test" 目录. os.rmdir( "/tmp/test")

21、文件和目录相关的方法有三个重要的源代码,它们提供了各种各样的实用方法来处理和操作Windows和Unix操作系统上的文件和目录:
  • File对象方法:File对象提供操作文件的函数。
  • OS对象方法:提供处理文件和目录的方法。

    推荐阅读