变量=open("要打开的文件",打开方式)

打开方式有如下六种,默认打开方式为r。

(1)r:以只读方式打开    //只能读取内容,并不能往进写内容

(2)w:以写方式打开(必要时清空)//文件如果存在则清空打开,如果文件不存在则创建

(3)a:以追加模式打开    //打开之后不会清空,会以追加形式写入数据

>>> fname = open("/root/python/a.txt","a")  //以追加方式打开一个不存在的文件,相当于创建
[root@pythion ~]# cat /root/python/a.txt    //查看文件,已经创建,但是里边没有内容
>>> fname.write("aaaa\n")                   //写入内容aaaa
[root@pythion ~]# cat /root/python/a.txt    //查看文件,还没有写入,其实只是写到了内存,并没有到硬盘里
>>> fname.flush()                           //如果需要立刻写入硬盘,执行flush()函数即可
[root@pythion ~]# cat /root/python/a.txt    //再次查看文件,已经写入
aaaa
>>> fname.write("bbbb\n")                   //将bbbb写入文件当中去
>>> fname.close()                           //关闭文件
[root@pythion ~]# cat /root/python/a.txt    //关闭文件后会将内容自动写入到硬盘中
aaaa
bbbb

(4)r+:以读写方式打开,但是需要注意文件指针的位置

>>> fname = open("/root/python/a.txt", "r+")  //以r+方式打开
>>> fname.write("abc")               //写入abc内容
>>> fname.flush()                  //刷新
[root@pythion ~]# cat /root/python/a.txt //查看,写入的内容的时候会从文件指针开始写入,原位替换
abca
bbbb
>>> fname.readline()         //读取也是从文件指针开始读取,如图指针移到了a,
'a\n'             //所以这行只读取了a和换行

w+:以读方式打开

a+:以读写方式打开

f = open(“/bin/ls”)   //加引号表示文件名,不加为变量
f.read()          //括号中为空,表示把文件中的所有都读出来,括号中有数表示“按需读取”,单位为字节
f.readline(大小)      //读取文件的一行
f.readlines(["文件内容\n","文件内容\n"])   //把文件中的所有行都读出来,然后放到列表中
f.write(“hello,world!!!”)         //将hello,world!!!写入到文件中去
f.writelines(["hello\n","world\n"])     //用列表可以写入多行,需加\n来换行
f.flush()      //如果需要立刻写进去,则需要执行此命令,相当于word中的ctrl+s保存
f.close()      //关闭文件,关闭文件后加进去的内容会写在磁盘上,当大于4096字节的话,会自动往
           //硬盘写,不会一直驻留在内存中。
f.tell()       //查看文件指针在哪
f.seek(offset[,whence])     //移动文件指针
offset是相当于某个位置的偏移量
whence的值,0表示文件开头,1表示当前位置,2表示文件的结尾
>>> fname.seek(2,0)      //从0开始(第一个字符),移动两个位置
>>> fname.tell()        //查看文件指针的位置
2
>>> fname.readline()       //读取一行,可以看到文件指针已经从abca中的a移动到了c上边
'ca\n'
>>> fname.seek(0,0)             //移动到文件开头
>>> fname.readline()            //读取第一行后,指针移动后第二行开头
'abca\n'
>>> fname.tell()                //读取指针位置
5
>>> fname.seek(1,1)             //从当前位置向后移动一个指针位置
>>> fname.tell()                //查看指针位置
6
>>> fname.seek(0,2)             //移动文件指针到行尾
>>> fname.tell()                //查看文件位置
22
>>> fname.read()                //读取数据,已经是空值了,可以r+方式写入数据,不会覆盖
''
>>> fname.seek(5)               //将文件指针移动到5,也就是本文件的第二行行首
>>> fname.readline()            //读取一行内容
'bbbb\n
[root@pythion python]# vim cp.py   
#!/usr/bin/env python

s_fname = "/bin/ls"                   //将文件名赋值给变量
d_fname = "/root/haha"

s_fobj = open(s_fname)                //打开文件并复制给变量
d_fobj = open(d_fname,"w")
buf_size = 4096

while True:
    data = s_fobj.read(buf_size)      //读取4096个字节给data
    if not data:                      //假如data为空,则break,结束本程序
        break
    d_fobj.write(data)                //将data数据写入目标文件中

标准文件

标准输入:一般是键盘,使用sys.stdin

标准输出:一般是显示器缓冲输出,使用sys.stdout

标准错误:一般是显示器的非缓冲输出,使用sys.stderr

>>> import sys                 //导入sys模块
>>> import tab                 //导入tab模块
>>> a = sys.stdin.readline()   //从屏幕读取一行内容赋值给a
i love you
>>> a                          //有\n
'i love you\n'
>>> b = raw_input()            //使用raw_input()函数读取数据赋值给b
i love you
>>> b                          //没有\n
'i love you'
>>> sys.stdout.write("i love you")     //在屏幕行输出,但是没有回车
i love you>>> 
>>> sys.stdout.write("i love you\n")
i love you
>>> sys.stderr.write("i love you")     //同样标准错误输出,默认也没有换行符
i love you>>> 
>>> sys.stderr.write("i love you\n")   
i love you