读取键盘输入
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()