1.python文件概念

python中文件就是一个对象,而linux中一切设备都可以看成文件,例如:磁盘文件,管道,网络Socket,外设等,都可以使用文件的方式对其进行操作。linux中文件的属性有:用户(owner),读(r)、写(w)、执行(x)权限。

上图中红色标记的地方,第一个‘-’表示它是一个普通文件(‘d’表示目录),第一组‘rw-’表示当前用户对该文件拥有读写权限,但没有执行权限,第二组‘r--’表示当前用户组对对该文件仅有读权限,第三组‘r--’表示其它用户对该文件公有读权限。额外提一下修复用户对文件的权限用chmod命令。

2.文件基本操作

2.1 文件打开方式

文件的打开方法:open(name[, mode[buf]]),默认以读的方式打开。参数说明如下:

name:文件路径

mode:打开方式

buf:缓冲 buffering大小

mode有以下几种:

其中 'r+'和‘r'的区别是'r+'对文件可以写操作,'w+'和’w'的区别是‘w'对文件可以读操作。'r+'和'r'一样要文件必须存在,而'w+'和'w'一样文件不存在则创建文件,存在则清空文件内容。'a'和'a+'的区别是'a'不可以对文件进行读操作。追加方式是指对文件写操作时在文件未处开始写,而其它方式是从文件初始位置开始写。打开方式加上b表示以二进制的方式打,而普通的是以字节的方式打开的。

简单的归类一下:

不可读的打开方式:'w'和'a'

不可写的打开方式:'r'

若不存在会创建新文件的打开方式:'a','a+','w','w+'

若文件存在则清空文件的打开方式:'w'和'w+'

2.2 文件读取方式

文件读取方式有以下几种

read([size]):读取文件(读取size个字节,默许读取全部文件)。

readline([size]):读取一行,如果行的长度>size,那么就读size个字节;如果行的长度

readlines([sizeint]):读取所有 行,返回每一行所组成的列表。若给定sizeint>0,返回总和大约为sizeint字节的行,实际上读取值可能比sizeint要大,因为要填充缓冲区。实际上遇到的情况是这个sizeint参数只能是8192=2^13的整数倍返回的结果才有变化,也就是说readlines(1)和readlines(8192)的效果是一样的,但readlines(8193)就不一样。

iter:使用迭代器读取文件,可以读完文件,使用next时就读一行,不是一下读到内存中,效率较高。(推荐)

2.3 文件写入与写缓存

文件写入方式如下:

write(str):将字符串写入文件。

writelines(sequence of strings):写多行到文件,参数为可迭代列表的对象(可以是一个字符串,也可以是由一个字符串所组成的元组、迭代器、列表)。如:writelines('123')、writelines(('1', '2', '3'))、writelines(['1', '2', '3'])。

使用write和writelines是将文件写入到文件缓冲中,并没有直接写入磁盘,只有调用close()或者flush(),写缓存同步到磁盘。当然也有例外,当写入数据量大于或等于写缓存,写缓存会自动同步到磁盘(只同步缓存大小的内容,乘下的内容还在文件缓存中)。

2.4 文件关闭

python文件为什么要关闭呢呢?

将文件写缓存到磁盘上;

liunu系统每个进程文件打开文件个数是有限的;

如果打开文件达到了系统限制,再打开文件就是失败;

造成内存资源浪费。

所以一定养成打开文件一定关闭的习惯。

2.5 文件指针

文件读写时有一个指名指向当前的读写位置,它会跟随着读写操作进行移动。Python文件指针操作如下:

seek(offset[, whence]):移动文件指针;offset是偏移量,可为负数;whence是偏移相对位置,有三种方式:

os.SEEK_SET:相对文件起位置;0

os.SEEK_CUR:相对文件当前位置;1

os.SEEK_END:相对文件结尾位置。2

tell()返回当前文件的偏移,long型。seek(3)缺省了whence,默认为os.SEEK_SET。

3.OS模块使用

3.1 文件编码格式

使用普通方式打开文件,不能写入utf-8编码的字符,要将unicode转码为'utf-8',然后写入。

In [15]: f=open('test.txt','r+')

In [16]: f.write(u'博客园')---------------------------------------------------------------------------UnicodeEncodeError Traceback (most recent call last) in ()----> 1 f.write(u'博客园')

UnicodeEncodeError:'ascii' codec can't encode characters in position 0-2: ordinal not in range(128)

In [17]: a=unicode.encode(u'博客园','utf-8')

In [18]: a

Out[18]: '\xe5\x8d\x9a\xe5\xae\xa2\xe5\x9b\xad'In [19]: f.wr

f.write f.writelines

In [19]: f.write(a)

In [20]: f.read()

Out[20]: ''In [21]: f.seek(0)

In [22]: f.read()

Out[22]: '\xe5\x8d\x9a\xe5\xae\xa2\xe5\x9b\xad'In [23]:

[2]+已停止 ipython

ljm@ljm-virtual-machine:~/文档$ cat test.txt

博客园

但是我们如何创建一个utf-8或者其它编码格式的文件呢?方法是使用codecs模块提供的方法创建指定编码格式文件:

open(fname, mode, encoding, errors, buffering)

In [1]: importcodecs

In [2]: f = codecs.open('test.txt','w','utf-8')

In [3]: f.encoding

Out[3]: 'utf-8'In [4]: f.write(u'博客园')

In [5]: f.close()

In [6]: cat test.txt

博客园

3.2 linux文件操作简介

linux文件系统简单示意图:

python操作文件流程分析图:

3.3 OS模块对文件和目录操作

使用os模块打开文件:

os.open(filename, flag [, mode]),mode一般用mask代替,重点是flag参数,表示打开文件方式:

os.O_CREATE:创建文件

os.O_RDONLY:只读方式打开

os.O_WRONLY:只写方式打开

os.O_RDWR:读写方式打开

使用os模块读取文件:

os.read(fb, buffersize),fb表示文件描述符,buffersize表示读取大小,返回的是读取内容。

使用os模块写入文件:

os.write(fb,string),返回值是写入内容的大小。

使用os模块文件指针操作:

os.lseek(fb, pos, how),这个和前面介绍的seek方法基本一致。

使用os模块关闭文件:

os.close(fb)

os模块的常用方法如下表所示:

os.path模块方法介绍

4.参考资料

python可以处理哪些文件_python文件处理相关推荐

  1. python读取写入文件_Python文件读写保存操作

    记录下第一次使用Python读写文件的过程,虽然很简单,第一次实现其实也有些注意的事项. 单个文件的读操作: 我们先假设一个需求如下: 读取一个test.txt文件 删除指定字符之前的文本 需求明白之 ...

  2. python在windows 输入和输出文件_Python文件、目录和输入输出操作

    读取键盘的输入 Python提供了input()内置函数从标准输入读入一行文本,默认的标准输入是键盘.input可以接收一个Python表达式作为输入,并将运算结果返回,如下所示: biotest@b ...

  3. python为什么保存不了_python文件无法保存怎么解决

    python中保存文件的方法如下 读文件f = open('Test.txt') #打开文件 data = f.read() #读取文件 print(data) # oneLine = f.readl ...

  4. python以读写方式打开文件_python 文件读写with open模式r,r+,w,w+,a,a+的区别

    原博文 2020-07-31 17:49 − 模式可做操作若文件不存在是否覆盖 r 只能读 报错 - r+ 可读可写 报错 是 w 只能写 创建 是 w+ 可读可写 创建 是 a 只能写 创建 否,追 ...

  5. python为什么打不开py文件_python文件打不开如何解决

    python中打开文件使用的是open()函数,获取文件对象,之后的操作都是相对于文件对象而言的.f = open('your_file.txt','r') 就可以打开一个文件进行操作.第二个参数为对 ...

  6. python能以文本和二进制方式处理文件_Python文件处理之文件写入方式与写缓存(三)...

    Python的open的写入方式有: write(str):将str写入文件 writelines(sequence of strings):写多行到文件,参数为可迭代对象 首先来看下writelin ...

  7. python 读取鼠标选中文本_python 文件

    目标 文件的概念 文件的基本操作 文件/文件夹的常用操作 文本文件的编码方式 01. 文件的概念 1.1 文件的概念和作用 计算机的 文件,就是存储在某种 长期储存设备 上的一段 数据 长期存储设备包 ...

  8. python能封装成exe文件_python文件封装成*.exe文件(单文件和多文件)

    环境:win10 64位  python3.7 单*.py文件打包 Python GUI:程序打包为exe 一.安装Pyinstaller,命令pip install Pyinstaller,(大写的 ...

  9. python 读取文件名 指定编码_Python 文件读写与编码解读

    一.Python 读取文件使用open函数 python open() 函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写. open(name[,mode[,buffer ...

最新文章

  1. 中文分词jieba的简单使用
  2. linux Telnet远程登录
  3. 我的首页收藏链接之07年前的LIST
  4. Guava常用工具类的使用
  5. kafka性能优化入门
  6. php在线加密lua,AES 256 Lua + PHP
  7. 最大子列和问题(PTA)
  8. Redundant Variable 多余变量
  9. c# 身份证地区码返回地区名 [对照表]
  10. 只有加法也能做深度学习,北大、华为等提出AdderNet,性能不输传统CNN
  11. pixhawk4连接PX4 Flow光流传感器调试过程记录
  12. matlab 参数方程绘图,用matlab绘图已知椭圆参数方程
  13. OpenCV学习笔记(九)之直方图均衡化(图像增强)
  14. 如何用word 2007在指定页插入页码和页眉页脚?
  15. python绘图使用matplotlib色卡
  16. amd显卡导致matlab崩溃,AMD的Radeon显卡黑屏和崩溃解决了大部分
  17. Swin Transformer : Hierarchical Vision Transformer using Shifted Windows
  18. 主流原型工具可用性测试横向比较
  19. eclipse中的clean和build功能的作用是什么
  20. 全网最详细的nodejs卸载和安装教程

热门文章

  1. ActivityMQ消息持久化到HANA数据库
  2. Linux线程-互斥锁pthread_mutex_t
  3. BestCoder Round #80 1002
  4. android特效按钮点击效果
  5. Openstack部署总结:“部署过程Error: Local ip for ovs agent must be set when tunneling is enabled”问题...
  6. Java反射机制简单使用
  7. 职场女人的心理问题提醒
  8. ×××(虚拟专用网)服务实验介绍
  9. 经济书籍:世界是平的
  10. postgres数据库最大连接数