输入(raw_input/input)—> 程序处理 —> 输出(print)
- 打开文件; f = open("filename")
- 处理文件;
f.read() # 可以读取文件内容
f.write("hello") # 不能往文件中写入,因为默认文件以r的模式打开;
- 关闭并保存文件; f.close()
若文件不存在,直接报错;
文件只能读取,不能写入;
若文件不存在,直接创建文件;
文件只能写入,不能读取;
打开文件时会清空原有文件内容;
若文件不存在,直接报错;
文件可以读也可以写;
具体写入的内容在哪里,由文件指针(句柄)决定;
若文件不存在,直接创建文件;
文件既能写入也能读取;
打开文件时会清空原有文件内容;
若文件不存在,直接创建文件;
文件只能写入,不能读取;
写入的内容直接追加到文件最后;
若文件不存在,直接创建文件;
文件既能写入也能读取;
写入的内容直接追加到文件最后;
以二进制的方式打开文件,可以跟r,w,+等组合使用;
In [20]: f = open("/python/daima/hello.md","r+")
In [21]: print f.read()
shigehaorenwoxiangcaonima
In [22]: f.write("westos")
In [23]: print f.read()
In [24]: f.close()
#######################################
如上所示
先读后写时指针移动,先读会让指针移动到字符串的尾部,
当你再次写入时,他会在这串字符的后面继续填写,不会
影响到字符串以前的内容,
######################################
In [25]: f = open("/python/daima/hello.md")
In [27]: f.read()
Out[27]: 'shigehaorenwoxiangcaonimawestos'
In [29]: f.close()
In [30]: f = open("/python/daima/hello.md","r+")
In [31]: f.write("error")
In [32]: print f.read()
haorenwoxiangcaonimawestos
In [33]: f.close()
In [34]: f = open("/python/daima/hello.md")
In [35]: f.read()
Out[35]: 'errorhaorenwoxiangcaonimawestos'
In [36]: f.close()
##############################################
先写后读时,由于指针初始位置是在文章开头,所以我们在写入时
会从文章开始位置开始覆盖文件内容,当你打印时,显示的是指针
后面的内容,再次打开指针又跑回了初始位置,所以有上面的效果
read() # 直接读取文件所有内容;
readline() # 每次读取文件一行内容,返回类型为字符串;
readlines() # 读取文件所有内容,以列表形式返回;
xreadlines() # 类似生成器,文件内容不直接以列表方式返回;
write(“str”) # 将字符串写入文件
writelines(“[“hello\n”,”world\n”]”) # 将序列的每个元素写入文件;
f.seek(偏移量,选项)
# 偏移量,如果为正数,代表向右偏移;如果为负数,代表向左偏移;
# 选项,如果为0,指针指向文件开始;
如果为1,指针指向当前位置;
如果为2,指针指向文件末尾;
f.flush() # 提交对文件的修改;
练习题:
1. 显示文件的所有行,但忽略以#开头的行;
2. 逐页显示文本文件的程序,用户输入一个文件名,每次默认显示行数为10行,给用户一个选项,”是否继续?(Y|N)”
- 内置模块(os,sys,time)
- 自定义模块
- 第三方模块
os,sys,time,datetime,json/pickle,shutil,random