《python编程》第四章——文件和目录工具

1、文件和目录,他们本身就是我们在电脑里看到的那些一个个文件。目录在windows中就是文件夹,很好理解。

2、我们用到的大多数用途,就是利用open内建函数及其文件对象来处理文件。

3、open函数返回的文件对象有多种方法,read,readline,readlines,write,writelines,close,seek,flush(将缓存区的数据强制转移到磁盘),fileno(获取底层的文件句柄)等。

4、打开一个文件的整个步骤都是分为三步的,1、打开,同时指定打开来做什么用(比如write,read),2、对文件进行操作,可能是读,可能是写,3、关闭文件(有时可以省略,一般来说不关闭下一次调用open会出错,如果不关闭的数量过多,影响内存)。

5、有一句是这样的:

print(line, end=‘‘)  #每行末尾带有一个‘\n‘

其中‘‘指的是一个空字符串,不太理解,但是记住应该就行了。

6、readline()执行时会自动迭代,就是指会自己读下一行。

7、普通的w(write)模式下,会擦除文件本身的内容,而在a(add)模式下,可以附加在文件末尾。

8、如果是处理二进制文件,加上一个b(byte),比如‘wb‘和‘rb‘。

9、二进制和文本文件,比如说图片,视频,音乐就是二进制文件,而txt就是文本文件,关键在于他们如何编码与解码。

10、文本文件也有很多种编码格式,比如Unicode(最常用),latin1,utf8,ascii,utf16。

11、不同系统间的换行符,Unix上永远是\n。而Windows时,文本模式下打开的文件,输入时\r\n会转换为\n,输出是的\n会转换为\r\n,而二进制模式下打开的文件,输入输出不会发生变化。所以在处理文本文件时,一直都是\n结尾。

12、用struct模块解析打包的二进制数据,一个模块,需要时再来看吧,感觉一般用到的不多。不过文中提到了将一个浮点型转为二进制的内容,因为曾经做过一次将二进制转为浮点型,我明白了,当浮点型数字以二进制呈现时,我们并不能直观的观察出哪个浮点型更大(但是整型可以)。

13、随机访问文件,其实就是seek(x)的调用,这里讲一个随机的概念,随机指的是可以访问任意一处,而不必从固定的文件头开始往后读取,具体概念可以参照RAM,RAM-RandomAccessMemory随机存取存储器,与地址无关,所以random指的是想访问哪里就访问哪里。

14、os模块中包含一个文件处理函数的附加集合。比如说os.open(path, flags, mode),os.read(descriptor, N), os.write(descriptor, string), os.lseek(descriptor, position, how),这几个知道一下就好了,看起来都是很标准的函数,用的时候再来查吧。

15、os.open里面也有模式标识符,如fdfile = os.open(r‘c:\test.txt‘, (os.O_RDWR | os.O_BINARY))。在某些系统上,这些标识符可以让我们在打开文件时指定更高级的参数,比如唯一访问权(O_EXCL)和非阻塞模式(O_NONBLOCK),但是有些标识符不能跨平台移植,所以大多数时候我们使用内建函数。

16、看到上面的(os.O_RDWR | os.O_BINARY),我们基本就能猜到,这里的参数本质应该都是二进制的,根据后文,我们知道了,最大权限就是0o777,转换为二进制就是0b111111111,9个1。

17、os.remove与os.unlink(后者是调用在Unix下的名称)同义。在这里我们其实就可以可以知道,我们电脑硬盘中文件的本质是什么,本质是一系列有序排列的铁磁性材料,所以我们将文件删除时,其实是将这部分铁磁性材料与我们的系统解绑(当然实际上可能是擦除了一部分文件头或者是文件链接),而这部分铁磁性材料并没有从我们的硬盘中被丢出。

18、目录工具,glob模块。这个工具接受文件名模式拓展,并返回一个匹配文件名组成的列表(并非生成器)。例:glob.glob(‘*‘),glob.glob(‘*.bin‘),glob.glob(‘parts/*‘),glob.glob(‘parts\part*)。

19、glob掉用接受shell中的常用文件名模式语法:“?”代表任意单个字符,“*”代表任意个字符,“[]”括起来的字符选集(没明白,文中注解的是:glob只是利用标准模块fnmatch来匹配名称模式。看来如果有需要的话要看fnmatch)。

20、os模块的listdir调用提供了另外将文件名称收集到Python列表的方法,调用的是一个简单的目录名字符串,比如os.listdir(‘.‘)。

21、os.popen返回换行符,在某些平台可能会对名称排序,glob.glob接受一个模式作为参数并返回带目录前缀的文件名,os.listdir需要一个简单的目录名,返回不带目录前缀的名称。glob和listdir的可移植性和结果(对跨平台而言)是相同的,listdir似乎速度最快。

22、如果用上述的方法返回的内容和我们实际想要的内容略有不同的话,我们可以使用os.path来处理。

23、python处理目录树几乎和检查单个目录一样容易。(以下)

24、os.walk访问器,被调用时需要制定目录的跟名称,然后自动从根目录开始向下遍历整个目录树。

25、os.listdir遍历,感觉不如os.walk好用。

26、在3.X版本中处理Unicode文件名。如果目录包含了可能无法正确解码的异常名称,那我就碰上了再来看,关键就是将之前处理的时候,将其作为二进制而非字符串来处理。

27、Unicode策列:文件内容和文件名。文件内容和文件名称的编码是不同的,python给两个不同的属性的设置提供了平台默认值,在windows 7中,文件内容编码默认为utf-8,文件名编码为mbcs。在大多数情况下,我们应当依赖文件名的默认Unicode API(不太明白)。

时间: 2025-01-05 22:46:03

《python编程》第四章——文件和目录工具的相关文章

APUE学习笔记:第四章 文件和目录

4.1 引言 本章将描述文件的特征和文件的性质 4.2 stat.fstat和lstat函数 #include<sys/stat.h> int stat(const char *restrict pathname,struct stat *restrict buf); int fstat(int filedes,struct stat *buf) int lstat(const char *restrict pathname,struct stat *restrict buf); 三个函数的返

APUE读书笔记-第四章 文件和目录

到第四章了,不知什么时候才能把这本书看完,耽误的时间太多了. 第四章是在第三章的基础上,主要描述文件系统的其他性质和文件的性质. 4.2 stat.fstat.fstatat.lstat函数 首先来看看这四个函数的原型: #include <sys/stat.h> ///usr/include/x86_64-linux-gnu/sys/ int stat (const char *__restrict __file, struct stat *__restrict __buf) int fst

第四章 文件和目录

本章主要介绍文件目录的创建.删除.读写.设置访问权限以及获取文件或目录的属性等: 唯一需要强调的可能就是:目录也是一种文件 获取文件目录的属性 关键函数 stat/fstat/lstat用于获取文件的信息,如文件的所有者,权限,修改和访问时间等等 #include <sys/stat.h> int fstat(int fildes, struct stat *buf); // 获取已打开的文件的相关信息 int fstat64(int fildes, struct stat64 *buf);

apue第四章 文件和目录

函数stat,fstat,fstatat, lstat #include <sys/stat.h> int stat(const char *restrict pathname, struct stat *restrict buf); int fstat(int fd, struct stat *buf); int lstat(const char *restrict pathname, struct stat *restrict buf); int lstat(int fd, const c

分分钟钟学会Python - 第四章 文件操作

第四章 文件操作 4.1 文件基本操作 obj = open('路径',mode='模式',encoding='编码') obj.write() # 写入 obj.read() # 读取 obj.close() #关闭 4.2 打开模式 r / w / a [只读只写字符串] * r+ / w+ / a+ [可读可写字符串] rb / wb / ab [只读只写二进制] * r+b / w+b / a+b [可读可写二进制] 4.3 操作 read() , 全部读到内存 read(1) 1表示一

python第四章文件操作

第四章 文件操作 4.1 文件基本操作 obj = open('路径',mode='模式',encoding='编码') # 打开文件 obj.write() # 把内容写入文件 obj.read() # 读取文件内容 obj.close() # 关闭文件(保存文件,把内存上的数据写入到文件上-->硬盘上,01010101存储的) # 3步:1.打开文件. 2. 操作文件 3. 关闭文件 4.2打开文件 4.2.1语句 file = open('文件路径',mode = 'r',encoding

第四章 文件的基本管理和XFS文件系统备份恢复

第四章 文件的基本管理和XFS文件系统备份恢复 本节所讲内容: 4.1 Linux系统目录结构和相对/绝对路径. 4.2 创建/复制/删除文件,rm -rf / 意外事故 4.3 查看文件内容的命令 4.4 实战:xfs文件系统的备份和恢复   4.1 Linux系统目录结构和相对/绝对路径 4.1.1系统目录结构 在WIN系统中,查看文件先进入相应的盘符,然后进入文件目录 ?? 在WIN中,它是多根 c:\ d:\ e:\ Linux只有一个根目录   ?? 使用tree命令查看linux目录

src/MD2.c:31:20: 错误:Python.h:没有那个文件或目录

一.前言 在CentOS 上安装fabric时出现问题,首先已安装pip, 用pip执行以下命令pip install 出现以下问题 [plain] view plain copy [[email protected] /]$ sudo pip install fabric Requirement already satisfied (use --upgrade to upgrade): fabric in /usr/lib/python2.6/site-packages/Fabric-1.3.

解决 Python.h:没有那个文件或目录 错误的方法

http://www.cnblogs.com/yuxc/archive/2012/05/13/2498019.html ———————————————————————————————————————————————————————— 今天在实验室的ubuntu机子上安装Eventlet,在安装依赖包greenlet时出现错误,出现编译错误. 错误如下: In file included from greenlet.c:5:0: greenlet.h:8:20: 致命错误: Python.h:没有