详细讲解Python中的文件I/O操作


Posted in Python onMay 24, 2015

 本章将覆盖所有在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

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

对所输入这将产生结果如下:

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

打开和关闭文件:

到现在为止,已经了解读取和写入标准输入和输出。现在,我们看看如何用实际数据文件。

Python提供了基本的函数和必要在默认情况下对文件进行操作的方法。可以使用一个文件对象file来做大部分文件操作。
open 函数:

想要读取或写入文件,必须使用Python内置的open()函数来打开它。该函数创建一个文件对象,这将用来调用与之关联的其他支持方式。
语法:

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

下面是参数的详细信息:

  •     file_name: file_name参数是一个字符串值,包含您要访问的文件的名称。
  •     access_mode: access_mode决定了文件必须被打开,即,读,写,追加等的可能值是下表中给定的一个完整的列表的模式。这是可选参数,默认文件存取方式为read (r)。
  •     buffering: 如果缓冲值被设置为0时,没有缓冲将发生。如果该缓冲值是1,行缓冲会在访问一个文件来执行。如果指定的缓冲值为大于1的整数,则缓冲作用将与所指示的缓冲区的大小进行。如果为负,则缓冲区的大小是系统默认(默认行为)。

这里是打开一个文件的不同模式的列表:

详细讲解Python中的文件I/O操作

 file 对象属性:

一旦文件被打开,文件对象可以得到有关该文件的各种信息。

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

详细讲解Python中的文件I/O操作

 例子:

#!/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

close() 方法:

一个文件对象的close()方法刷新未写入的信息,并关闭该文件的对象,在这之后没有数据内容可以执行写入。

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

读取和写入文件:

file对象提供了一组访问方法。我们来看看如何使用read()和write()方法来读取和写入文件。
write() 方法:

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!!

read() 方法:

read()方法读取一个打开的文件的字符串。要注意的是Python字符串可以具有二进制数据,而不仅仅是文本。
语法

fileObject.read([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

文件位置:

tell()方法告诉该文件中的当前位置;换句话说,下一个读取或写入将发生在从该文件的开头的字节数。

seek(offset[, from]) 方法会更改当前的文件位置。偏移参数指示要移动的字节数。从该参数指定字节将被移至参考点。

如果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模块提供了一些方法,可以帮助执行文件处理操作,如重命名和删除文件。

要使用这个模块,需要先导入它,然后调用相关的功能。
rename() 方法:

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" )

remove() 方法:

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

os.remove(file_name)

例子

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

#!/usr/bin/python
import os

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

Python中的目录:

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

可以使用os模块的mkdir()方法在当前目录下创建目录。需要提供参数,这个方法包含的目录要创建的名称。
语法:

os.mkdir("newdir")

例子:

以下为示例在当前目录下创建test目录如下所示:

#!/usr/bin/python
import os

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

chdir() 方法:

可以使用chdir()方法来改变当前目录。chdir()方法接受一个参数,那就是要成为当前目录的目录的名称。
语法:

os.chdir("newdir")

例子:

下面是一个进入“/home/newdir”目录的例子:

#!/usr/bin/python
import os

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

getcwd() 方法:

getcwd()方法显示当前的工作目录。
例子:

os.getcwd()

例子:

以下是例子给定为当前目录:

#!/usr/bin/python
import os

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

rmdir() 方法:

rmdir()命令方法删除目录,它是通过方法的参数。

在删除一个目录,它的所有内容应该被删除。
语法:

os.rmdir('dirname')

例子

下面是一个例子删除“/tmp/test”目录。它是必需的,得到的目录完全的名称,否则将搜索在当前目录中的目录。

#!/usr/bin/python
import os

# This would remove "/tmp/test" directory.
os.rmdir( "/tmp/test" )
Python 相关文章推荐
Python ORM框架SQLAlchemy学习笔记之映射类使用实例和Session会话介绍
Jun 10 Python
Python __setattr__、 __getattr__、 __delattr__、__call__用法示例
Mar 06 Python
python返回昨天日期的方法
May 13 Python
python简单猜数游戏实例
Jul 09 Python
详解Python的Django框架中的模版相关知识
Jul 15 Python
Python简单连接MongoDB数据库的方法
Mar 15 Python
python shell根据ip获取主机名代码示例
Nov 25 Python
python re模块的高级用法详解
Jun 06 Python
Python设计模式之装饰模式实例详解
Jan 21 Python
Python的numpy库下的几个小函数的用法(小结)
Jul 12 Python
Python socket处理client连接过程解析
Mar 18 Python
python中altair可视化库实例用法
Jan 26 Python
详解在Python中处理异常的教程
May 24 #Python
Python中关于使用模块的基础知识
May 24 #Python
详解Python中的各种函数的使用
May 24 #Python
Python标准库之Sys模块使用详解
May 23 #Python
Python OS模块常用函数说明
May 23 #Python
在Python中操作时间之tzset()方法的使用教程
May 22 #Python
详解Python中time()方法的使用的教程
May 22 #Python
You might like
dedecms中显示数字验证码的修改方法
2007/03/21 PHP
PHP5.5和之前的版本empty函数的不同之处
2014/06/13 PHP
js 中的switch表达式使用示例
2020/06/03 Javascript
jquery获取radio值实例
2014/10/16 Javascript
jQuery中[attribute!=value]选择器用法实例
2014/12/31 Javascript
Vue2组件tree实现无限级树形菜单
2017/03/29 Javascript
Vue自定义图片懒加载指令v-lazyload详解
2020/12/31 Javascript
JS中的JSON对象的定义和取值实现代码
2018/05/09 Javascript
vue 自定义提示框(Toast)组件的实现代码
2018/08/17 Javascript
vue仿element实现分页器效果
2018/09/13 Javascript
详解VScode编辑器vue环境搭建所遇问题解决方案
2019/04/26 Javascript
vue+vant实现商品列表批量倒计时功能
2020/01/13 Javascript
人脸识别经典算法一 特征脸方法(Eigenface)
2018/03/13 Python
python实现音乐下载器
2018/04/15 Python
python调用staf自动化框架的方法
2018/12/26 Python
CSS3弹性伸缩布局之box布局
2016/07/12 HTML / CSS
使用JS+CSS3技术:让你的名字动起来
2013/04/27 HTML / CSS
css图标制作教程制作云图标
2014/01/19 HTML / CSS
CSS3的Flexbox布局的简明入门指南
2016/04/08 HTML / CSS
ECCO爱步加拿大官网:北欧丹麦鞋履及皮具品牌
2017/07/08 全球购物
美国高级工作服品牌:Carhartt
2018/01/25 全球购物
惊艳的手工时装首饰:Migonne Gavigan
2018/02/23 全球购物
成教自我鉴定
2013/10/27 职场文书
医学生自我鉴定范文
2013/11/08 职场文书
出国导师推荐信
2014/01/16 职场文书
施工材料员岗位职责
2014/02/12 职场文书
办公室副主任职责范本
2014/03/08 职场文书
巾帼文明岗申报材料
2014/05/01 职场文书
优秀班主任材料
2014/12/16 职场文书
写给孩子的新学期寄语
2015/02/27 职场文书
2015毕业生实习期工作总结
2015/04/09 职场文书
欠款纠纷起诉状
2015/05/19 职场文书
总经理聘用协议书
2015/09/21 职场文书
《刷子李》教学反思
2016/02/20 职场文书
防止web项目中的SQL注入
2021/12/06 MySQL
MySQL数据库安装方法与图形化管理工具介绍
2022/05/30 MySQL