Python 文件I/O和File方法
- 概念扩充
- Input/Output,也就是输入和输出
由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘、网络等,就需要IO接口;注意:输入和输出是一个相对的概念,但这里都是针对我们的程序而言的。- IO编程中,Stream(流)和缓冲概念
IO编程中,Stream(流)是一个很重要的概念,可以把流想象成一个水管,数据就是水管里的水,但是只能单向流动。Input Stream就是数据从外面(磁盘、网络)流进内存,Output Stream就是数据从内存流到外面去。对于浏览网页来说,浏览器和新浪服务器之间至少需要建立两根水管,才可以既能发数据,又能收数据。
由于管道的传输可能双发读写速度的不一致性,提高效率考虑,采用了缓冲技术;还是上面的例子,加上一个小桶,数据装满“桶”了,再读写传输。[有的地方叫做:同步和异步;原理一样。Java中也有类似概念,NIO后好像有了"块"操作的概念]
- 常见的IO的操作
- 打印到屏幕
~~~
print "Python hello world,和我一起学python";
~~~
- 读取键盘输入
~~~python
方式1
str = raw_input("请输入:");
print "你输入的内容是: ", str
方式2
str = input("请输入:");
print "你输入的内容是: ", str
~~~
- 文件操作:文件的基本操作,增删改查
- 打开:os.fdopen(fd[, mode[, bufsize]])
> ~~~python
f = open('python_text.txt', 'w')
~~~
- file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。
- ccess_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
- buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
- 关闭:os.close(fd)
f = close()
~~~
使用系统资源,必须占用,这个是个 好习惯
- 重命名(可修改目录):os.renames(old, new)
os.rename( "python_text.txt", "new_python_text.txt" )
~~~
需要两个参数,当前的文件名和新文件名
- 删除: os.remove(path)
os.remove( "new_python_text.txt")
~~~
需要提供要删除的文件名作为参数。
- 目录操作
- **当前目录下创建新的目录 **:os.mkdir(path[, mode])
os.mkdir("newdir")
需要提供一个包含了要创建的目录名称的参数
**注意 **:*当前目录下创建
- **改变当前的目录**:os.chdir(path)
> ~~~python
# 将当前目录改为"/home/newdir"
os.chdir("/home/newdir")
#给出当前的目录
print os.getcwd()
- **删除目录 **:os.remove(path)
os.rmdir('dirname')
删除" /tmp/test"目录的例子。目录的完全合规的名称必须被给出,否则会在当前目录下搜索该目录。
- 补充和追加内容:
> IO和File这部分内容可以实现蛮多的操作,例如文件的批量新建、拷贝等,包括使用正则时找你要的文件等...
1. 文件的读写操作
read(file_name [, access_mode][, buffering])
write(file_name [, access_mode][, buffering])
注意:返回的是文件对象
>~~~python
f = open('python_text.txt', 'w')
f.write("hello_python")
f.close()
f=open('python_text.txt', 'r')
s = f.read()
f.close()
- file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。
- access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
- buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。
-
打开文件的模式
好多就截图了,可以记住常用就可以(也i挺好记的)
- 最后结语:aboutmore
其实上面介绍的都是常用的部分
以下扩充:
- 添加总结思维导图:【刚开始分享百度脑图】http://naotu.baidu.com/file/3e40949648c3e50b003adeebe334c063?token=2d1fecb7301358ce
- 代码比较简单不贴了,后期看上传值github或者coding吧!
时间:2017年6月28日00:56:25