详细讲解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中将阿拉伯数字转换成中文的实现代码
May 19 Python
盘点提高 Python 代码效率的方法
Jul 03 Python
Python中实现两个字典(dict)合并的方法
Sep 23 Python
python 字典修改键(key)的几种方法
Aug 10 Python
python环境路径配置以及命令行运行脚本
Apr 02 Python
django之使用celery-把耗时程序放到celery里面执行的方法
Jul 12 Python
对Python函数设计规范详解
Jul 19 Python
解决Python对齐文本字符串问题
Aug 28 Python
Python使用微信接入图灵机器人过程解析
Nov 04 Python
python面向对象之类属性和类方法案例分析
Dec 30 Python
pygame实现弹球游戏
Apr 14 Python
python3判断IP地址的方法
Mar 04 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
php cout<<的一点看法
2010/01/24 PHP
php切割页面div内容的实现代码分享
2012/07/31 PHP
PHP的时间戳与具体时间转化的简单实现
2016/06/13 PHP
详谈PHP程序Laravel 5框架的优化技巧
2016/07/18 PHP
laravel 多图上传及图片的存储例子
2019/10/14 PHP
csdn 批量接受好友邀请
2009/02/19 Javascript
IE6下js通过css隐藏select的一个bug
2010/08/16 Javascript
node.js学习总结之调式代码的方法
2014/06/25 Javascript
原生js模拟淘宝购物车项目实战
2015/11/18 Javascript
java必学必会之static关键字
2015/12/03 Javascript
原生JS实现轮播效果+学前端的感受(防止走火入魔)
2016/08/21 Javascript
使用JavaScript触发过渡效果的方法
2017/01/19 Javascript
判断横屏竖屏(三种)
2017/02/13 Javascript
jquery操作select取值赋值与设置选中实例
2017/02/28 Javascript
Vue.js学习教程之列表渲染详解
2017/05/17 Javascript
JS继承与闭包及JS实现继承的三种方式
2017/10/15 Javascript
关闭Vue计算属性自带的缓存功能方法
2018/03/02 Javascript
详释JavaScript执行环境与执行栈
2019/04/02 Javascript
js计时事件实现圆形时钟
2020/03/25 Javascript
微信小程序实现滑动操作代码
2020/04/23 Javascript
JS如何定义用字符串拼接的变量
2020/07/11 Javascript
python实现简单中文词频统计示例
2017/11/08 Python
Python迭代器和生成器定义与用法示例
2018/02/10 Python
python文本数据相似度的度量
2018/03/12 Python
python实现随机调用一个浏览器打开网页
2018/04/21 Python
详解python中的Turtle函数库
2018/11/19 Python
通过celery异步处理一个查询任务的完整代码
2019/11/19 Python
在Anaconda3下使用清华镜像源安装TensorFlow(CPU版)
2020/04/19 Python
Python能做什么
2020/06/02 Python
Python Opencv图像处理基本操作代码详解
2020/08/31 Python
多视角3D可旋转的HTML5 Logo动画
2016/03/02 HTML / CSS
中邮全球便购:中国邮政速递物流
2017/03/04 全球购物
八一演出活动方案
2014/02/03 职场文书
2014年教师节演讲稿
2014/09/03 职场文书
深入理解 Golang 的字符串
2022/05/04 Golang
win10重装系统后上不了网怎么办 win10重装系统网络故障的解决办法
2022/07/23 数码科技