Index ¦ Archives ¦ Atom

Python文件 I/O


读取键盘输入

Python提供了两个内置函数从标准输入读入一行文本,默认的标准输入是键盘.
* raw_input * input

raw_input函数

raw_input()函数从标准输入读取一行,并返回一个字符串(会去掉结尾的换行符).

input函数

input()函数和raw_input()函数基本相似,但是input可以接收一个python表达式为输入,并将运算结果返回.

#!/usr/bin/python
#-*- coidng: UTF-8 -*-

str = input("请输入: ")
print "你输入的内容是: ", str 

这回产生如下的对应输入的结果:

请输入: [x*5 for x in range(2,10,2)]
你输入的内容是: [10,20,30,40]

raw_input和input的区别在于,raw_input读到什么返回什么;而input会对读到的内容里的表达式做运算再返回.


打开和关闭文件操作

python提供了必要的函数和方法进行默认情况下的文件基本操作.你可以使用file对象做大部分的文件操作.

open()函数

你必须先用python内置的open()函数来打开一个文件,创建一个file对象来对打开的文件进行读写操作:

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

各个参数的细节如下:
file_name:改变量是要打开的文件名称的字符串值. access_mode:该变量决定了打开文件的模式(只读,只写,读写,追加等等).所有可见值见如下的完全列表.这个参数是非强制的,默认文件访问模式为只读(r).
* buffering:如果该参数被设置为0,就不会有寄存.如果该参数为1,访问文件时会寄存.如果将该参数设置为大于1的整数,表明了这就是寄存区的缓冲大小.如果取负值,寄存区的缓冲区大小则为系统默认.

不同模式打开文件的完全类表:

模式access_mode 描述
r 只读,文件指针放在文件开头.这是默认打开模式
rb 二进制格式打开,文件指针放在文件开头
r+ 读写打开,文件指针放在文件开头
rb+ 二进制格式读写打开,文件指针放在文件开头
w 打开只用于写入,如果存在则将其覆盖,如果不存在,创建新文件
wb 以二进制打开只用与写,存在则覆盖,不存在则创建新文件
w+ 打开文件用于读写.如果存在则覆盖,不存在则创建新文件
wb+ 以二进制打开文件用于读写.存在则覆盖,不存在创建新文件
a 打开文件追加.如果文件存在,指针放于文件结尾,不存在创建新文件写入
ab 以二进制格式打开文件追接
a+ 打开文件用于读写.如果文件存在,指针放于文件结尾.不存在创建新文件
ab+ 以二进制格式打开文件用于读写,文件存在指针放于文件结尾追加写.不存在则创建新文件

file对象的属性

一个文件被打开后,你有一个file对象接收该文件的各种信息.
以下是和file对象相关的所有属性列表:

属性 描述
file.closed 文件已关闭返回true,否则返回false
file.mode 返回打开文件的访问模式
file.name 返回打开的文件的名称
file.softspace 如果用print输出后,必须跟一个空格符则返回false,否则返回true

close()方法

file对象的close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入操作.
当一个文件对象的引用被重新指定给另一个文件时,python会关闭之前的文件.用close()方法关闭使用完的文件是一个很好的习惯:
fileobject.close()

读写文件

file对象提供了一系列方法来访问文件,比如read()和write()方法来读取和写入文件.

write()方法

write()方法可将任何字符串写入一个打开的文件.需要重点注意的是:python字符串可以是二进制数据,而不仅仅是文字.
write()方法不会在字符串的结尾添加换行符('\n'),示例如下:

# -*- coding: UTF-8 -*-

#打开一个文件
fo = open("foo.txt", "wb")
fo.write("你好python!\n你好世界!\n")

#关闭打开的文件
fo.close()
read()方法

read()方法从一个打开的文件中读取一个字符串.示例如下:

# -*- coding: utf-8 -*-

#打开一个文件
fo = open("foo.txt", "r+")
str = fo.write(10)
print "读取到的字符串是: ", str

#关闭打开的文件
fo.close()

这里传入的参数是要从文件中读取的字符串的字节计数.该方法从文件的开头开始读取,如果没有传入参数,它会尝试读取尽可能多的内容,很可能是直到文件的末尾.


文件定位

tell()方法告诉你文件内的当前位置,也就是下次读写会发生在文件开头这么多字节之后.
seek(offset [,from])方法改变当前文件的位置,offset变量表示要移动的字节数,from变量指定开始移动字节的参考位置,如果from为0,指将文件的开头作为移动的参考位置,如果为1,则使用当前位置为移动参考位置,如果为2则从末尾开始移动.
示例:

# -*- coding: utf-8 -*-

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)
pring "重新读取字符串: ", str

#关闭打开的文件
fo.close()

© Ivesein. Built using Pelican. Theme by Giulio Fidente on github.