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_inputinput
raw_input 函数
raw_input([prompt]) 从标准输入读取一行并返回字符串(去除尾部换行符)。
#!/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
input 函数
input([prompt]) 类似 raw_input,但假设输入是合法的 Python 表达式,并返回计算结果。
#!/usr/bin/python
str = input("Enter your input: ")
print("Received input is : ", str)
输入 [x*5 for x in range(2,10,2)] 时输出:
Enter your input: [x*5 for x in range(2,10,2)]
Received input is : [10, 20, 30, 40]
文件的打开与关闭
到目前为止,你一直在读写标准输入输出。现在我们将学习如何操作实际数据文件。
Python 默认提供操作文件所需的基本函数和方法,大部分文件操作通过 文件对象 完成。
open 函数
读写文件前,必须使用内置 open() 函数打开文件,该函数创建一个 文件对象,用于调用相关方法。
语法
file_object = open(file_name [, access_mode][, buffering])
参数说明:
- file_name:要访问的文件名字符串。
- access_mode:打开模式(读、写、追加等),默认为只读 (
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+:二进制追加读写。 |
文件对象属性
打开文件后,可通过文件对象获取相关信息:
| 序号 | 属性及说明 |
|---|---|
| 1 | file.closed:文件是否关闭。 |
| 2 | file.mode:打开模式。 |
| 3 | file.name:文件名。 |
| 4 | file.softspace:print 是否需显式空格。 |
示例
#!/usr/bin/python
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
close() 方法
close() 刷新未写入信息并关闭文件,之后不可再写入。Python 在文件对象被重新赋值时自动关闭,但建议显式调用 close()。
语法
fileObject.close()
示例
#!/usr/bin/python
fo = open("foo.txt", "wb")
print("Name of the file: ", fo.name)
fo.close()
文件读写
文件对象提供 read() 和 write() 方法简化读写操作。
write() 方法
向打开的文件写入任意字符串(含二进制数据),不自动添加换行符。
语法
fileObject.write(string)
示例
#!/usr/bin/python
fo = open("foo.txt", "wb")
fo.write("Python is a great language.\nYeah its great!!\n")
fo.close()
打开 foo.txt 可见内容:
Python is a great language.
Yeah its great!!
read() 方法
从打开文件读取字符串(含二进制数据)。
语法
fileObject.read([count])
count 为读取字节数,省略则读至文件末尾。
示例
#!/usr/bin/python
fo = open("foo.txt", "r+")
str = fo.read(10)
print("Read String is : ", str)
fo.close()
输出:
Read String is : Python is
文件定位
tell() 返回当前文件位置(距开头字节数)。seek(offset[, from]) 移动文件指针:offset 为移动字节数,from 为参考位置(0=开头,1=当前,2=末尾)。
示例
#!/usr/bin/python
fo = open("foo.txt", "r+")
str = fo.read(10)
print("Read String is : ", str)
position = fo.tell()
print("Current file position : ", position)
fo.seek(0, 0)
str = fo.read(10)
print("Again read String is : ", str)
fo.close()
输出:
Read String is : Python is
Current file position : 10
Again read String is : Python is
文件重命名与删除
os 模块提供重命名和删除文件的方法,使用前需 import os。
rename() 方法
重命名文件,参数为原文件名和新文件名。
os.rename(current_file_name, new_file_name)
示例
#!/usr/bin/python
import os
os.rename("test1.txt", "test2.txt")
remove() 方法
删除文件,参数为文件名。
os.remove(file_name)
示例
#!/usr/bin/python
import os
os.remove("test2.txt")
目录操作
所有文件包含在目录中,os 模块提供创建、删除、切换目录的方法。
mkdir() 创建目录
os.mkdir("newdir")
示例
#!/usr/bin/python
import os
os.mkdir("test")
chdir() 切换目录
os.chdir("newdir")
示例
#!/usr/bin/python
import os
os.chdir("/home/newdir")
getcwd() 获取当前目录
os.getcwd()
示例
#!/usr/bin/python
import os
os.getcwd()
rmdir() 删除目录
删除前需清空目录内容。
os.rmdir('dirname')
示例
#!/usr/bin/python
import os
os.rmdir("/tmp/test")
文件与目录相关方法
三个重要来源提供处理文件和目录的实用方法:
- 文件对象方法:操作文件。
- OS 对象方法:处理文件和目录。
Python
- 用 Go 轻松托管静态文件:经验证的方法
- 平锉刀:木工金属加工必备修整工具全解析
- C 语言输入输出(I/O)精通:scanf() 与 printf() 详解
- C语言文件处理完全指南:fopen、fprintf、fread 与 fseek
- C 语言文件 I/O 实战:创建、打开、读写与二进制操作
- C 语言头文件详解:类型、用法与最佳实践
- C++文件I/O完全指南:fstream读写、打开模式、定位指针与完整实例
- C# 文件 I/O 完全指南:流、读写操作与文件系统管理
- 精通Python输入输出与模块导入:实战指南
- Python 文件 I/O:掌握文件操作、读写与管理
- 精通 Python 目录与文件操作
- Python 检查文件与目录是否存在:实战指南