变量=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