变量=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 //关闭文件后会将内容自动写入到硬盘中aaaabbbb
(4)r+:以读写方式打开,但是需要注意文件指针的位置
>>> fname = open("/root/python/a.txt", "r+") //以r+方式打开>>> fname.write("abc") //写入abc内容>>> fname.flush() //刷新[root@pythion ~]# cat /root/python/a.txt //查看,写入的内容的时候会从文件指针开始写入,原位替换abcabbbb>>> 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 pythons_fname = "/bin/ls" //将文件名赋值给变量d_fname = "/root/haha"s_fobj = open(s_fname) //打开文件并复制给变量d_fobj = open(d_fname,"w")buf_size = 4096while 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() //从屏幕读取一行内容赋值给ai love you>>> a //有\n'i love you\n'>>> b = raw_input() //使用raw_input()函数读取数据赋值给bi 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