文件的概念和编码
1、文件的概念
文件是以硬盘为载体存储在计算机上面的信息的集合,文件名字后面通常使用'.'+三个字母作为文件扩展名,用来表示文件的类型;
2、文件的分类
(1)文件大体上分成两类:文本文件、二进制文件;
①文本文件
a.可以使用 文本编辑软件(如记事本) 查看
b.本质上还是二进制文件
c.文件数据通过输入和输出的形式分为字节流
②二进制文件
a.保存的内容 不是给人直接阅读的,而是提供给其他软件使用的,如图片文件、音频文件、视频文件等等
b.二进制文件不能使用 文本编辑软件(如记事本) 查看
c.文件数据通过输入和输出的形式分为字符流
注:最简单的区分字符流和字节流数据的方法:将文件以记事本(文本文档)的形式打开,看得懂的就是字符流数据,看不懂的(乱码的)就是字节流数据。
(2)文件的格式一般有5种:文档格式、图片格式、视频格式、声音格式、系统格式,具体文件类型的细分有:
①文本文件类型(.txt)
②视频文件类型(.mp4)
③音频文件类型(.mp3)
④图片文件类型(.jpg)
⑤可执行文件类型(.exe) ---软件
注:文件类型细分主要写了主流的类型,其他具体可自行查阅
3、文本文件的编码格式(科普——摘自网络)
字符编码就类似于‘百度翻译’,可以将编程语言的字符代码转换为计算机这台电脑能够识别的二进制数据,文本文件存储的内容是基于 字符编码 的文件,常见的编码有 ASCII 编码,UNICODE 编码等
注:Python 2.x 默认使用 ASCII 编码格式,Python 3.x 默认使用 UTF-8 编码格式
- ASCII 编码
计算机内部,所有信息最终都是一个二进制值。每一个二进制位(bit)有0和1两种状态,因此八个二进制位就可以组合出256种状态,这被称为一个字节(byte)。也就是说,一个字节一共可以用来表示256种不同的状态,每一个状态对应一个符号,就是256个符号,从00000000到11111111。
ASCII 码一共规定了128个字符的编码,比如空格SPACE是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的一位统一规定为0。
(2)UNICODE 编码
UNICODE编码将世界上所有的符号都纳入其中,并给每一个符号一个独一无二的编码,解决乱码问题。
UNICODE的问题
UNICODE只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储
比如,汉字严的UNICODE 是十六进制数4E25,转换成二进制数足足有15位(100111000100101),也就是说,这个符号的表示至少需要2个字节。表示其他更大的符号,可能需要3个字节或者4个字节,甚至更多。
这里就有两个严重的问题,第一个问题是,如何才能区别 UNICODE 和 ASCII ?计算机怎么知道三个字节表示一个符号,而不是分别表示三个符号呢?第二个问题是,我们已经知道,英文字母只用一个字节表示就够了,如果 UNICODE统一规定,每个符号用三个或四个字节表示,那么每个英文字母前都必然有二到三个字节是0,这对于存储来说是极大的浪费,文本文件的大小会因此大出二三倍,这是无法接受的
它们造成的结果是:1)出现了UNICODE的多种存储方式,也就是说有许多种不同的二进制格式,可以用来表示 UNICODE。2)UNICODE 在很长一段时间内无法推广,直到互联网的出现。
(3)UTF-8
互联网的普及,强烈要求出现一种统一的编码方式。UTF-8 就是在互联网上使用最广的一种 Unicode 的实现方式。其他实现方式还包括 UTF-16(字符用两个字节或四个字节表示)和 UTF-32(字符用四个字节表示),不过在互联网上基本不用。重复一遍,这里的关系是,UTF-8 是 Unicode 的实现方式之一。
UTF-8 最大的一个特点,就是它是一种变长的编码方式。它可以使用1~4个字节表示一个符号,根据不同的符号而变化字节长度。
UTF-8 的编码规则很简单,只有二条:
1)对于单字节的符号,字节的第一位设为0,后面7位为这个符号的 Unicode 码。因此对于英语字母,UTF-8 编码和 ASCII 码是相同的。
2)对于n字节的符号(n > 1),第一个字节的前n位都设为1,第n + 1位设为0,后面字节的前两位一律设为10。剩下的没有提及的二进制位,全部为这个符号的 Unicode 码。
下表总结了编码规则,字母x表示可用编码的位。
跟据上表,解读 UTF-8 编码非常简单。如果一个字节的第一位是0,则这个字节单独就是一个字符;如果第一位是1,则连续有多少个1,就表示当前字符占用多少个字节。
下面,还是以汉字严为例,演示如何实现 UTF-8 编码。
严的 Unicode 是4E25(100111000100101),根据上表,可以发现4E25处在第三行的范围内(0000 0800 - 0000 FFFF),因此严的 UTF-8 编码需要三个字节,即格式是1110xxxx 10xxxxxx 10xxxxxx。然后,从严的最后一个二进制位开始,依次从后向前填入格式中的x,多出的位补0。这样就得到了,严的 UTF-8 编码是11100100 10111000 10100101,转换成十六进制就是E4B8A5
注:转载自:
https://blog.csdn.net/Deft_MKJing/article/details/79460485,详细了解可自行查询。
(4)字符和二进制数据之前转换:
1)字符串或变量名.encode('编码格式')—>将字符(str)按照指定的编码格式转为二进制数据(bytes) ---进行编码
2)字符串或变量名.decode('编码格式')—>将二进制数据(bytes)按照指定的编码格式转为字符(str) ---进行解码
实例输出结果为:
文件的基本操作
1、打开和创建文件
(1)打开一个文件
使用open()方法用于打开一个文件,并返回文件对象,语法格式如下:
open() 函数常用形式是接收两个参数:文件名(file)和模式(mode),功能是将该文件路径用指定的模式去打开并保存在这句代码中,指定模式一般默认为'r'(只读)模式
完整的语法格式为:
mode 参数有
模式 | 描述 |
t | 文本模式 (默认)。 |
x | 写模式,新建一个文件,如果该文件已存在则会报错。 |
b | 二进制模式。 |
+ | 打开一个文件进行更新(可读可写)。 |
U | 通用换行模式(Python 3 不支持)。 |
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 |
w | 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
w+ | 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
(2)创建一个文件
open函数会通过路径来查找对应的文件名,然后根据指定的模式去打开或创建该文件,是打开还是创建一个新文件取决于:所给的'文件路径'存不存在(路径的表示方式:路径都需要具体写到文件名为止)。
注1:绝对路径:指的是文件在硬盘上真正存在的路径,一般是从根文件夹(根文件夹在windows系统中是指盘符(C:、D:),在Mac os和Linux系统中以/作为根文件夹)开始的:
注2:相对路径:指的是要找的文件相对于当前文件(现在写代码的这个文件)所在的位置。
注3:.\(当前目录)..\(返回上一目录)
故当'文件路径'不存在时,可以设置一下open函数的第二个参数,以创建的形式去打开文件,就是创建一个新文件了。
其中【创建文件】的打开模式有:'w'、'wb'、'w+'、'wb+'、'a'、'a+'、'ab'、'ab+'时,文件路径不存在,就会自动创建一个新文件,但是如果不是这8个模式之一的模式去创建就会报错。
实例输出结果为:
2、文件的写入
(1)写文件直接调用write方法(write方法每次只可以接受一个参数)。
注:增加代码f.flush因为操作系统缓冲机制(文件内容会暂时保存在内存缓冲区中,并不立即写入文件)。故增加f.flush()保存文件用于刷新缓冲区并确保写入文件,也可使用f.close()(用于关闭文件,关闭前会自动保存文件)。
(2)一次写入多个内容,调用writelines。
注1:writelines将一个纯字符元素的序列类型数据中的字符串写入到文件中。
注2:对于write函数和writelines函数输入内容必须是字符串数据,其他的会报错。
3、文件的保存和关闭
(1)保存文件的函数变量名.flush()
变量名.flush()只能保存文件,不能关闭文件,保存后还可以继续进行读写操作,但是占用内存
(2)关闭文件的函数变量名.close()
变量名.close()在关闭文件的同时也会保存文件数据,但是关闭后不能对文件进行读写操作,所以一般用来在做完所有操作后进行关闭文件(只有关闭文件才可以不占用内存空间)。
4、文件的读取
文件内容:
(1)逐个字符获取文件中的内容,变量名.read()
变量名.read(字符个数),根据指定的字符个数来【逐个读取】文件中的内容,不提供字符个数,默认是获取(读取)文件全部内容
实例输出结果为:
注1:因为有些Windows系统默认使用GBK的编码格式,open函数会直接使用系统自带的编码格式去打开文件,但是如果txt文件是UTF-8的编码格式,那么就起冲突了,会报错,故需要:在open函数里面加上第三个参数(encoding='UTF-8')。
(2)获取一行文件中的内容,变量名.readline()
变量名.readline(),每一次只能读一行(根据指针位置来读),然后根据指定的字符个数来获取具体的字符,默认只获取一行内容,并且包括换行,
实例输出结果为:
(3)一次性获取文件中所有行内容,变量名.readlines()
变量名.readlines(),一次性获取文件中所有行内容,然后把每一行作为元素保存在列表里面
实例输出结果为:
综合操作数据
1、指针的操作
当写入和读取同时进行时:要注意指针的位置,否则容易结果为空
注1:因为上面是以'a+'的模式打开文件,而'a+'的功能是:文件指针放在文件的末尾(即新写入文件会位于已有内容之后),故想读出数据,就需要通过移动指针的位置到最前面去。
(1)查看指针的位置变量名.tell()
变量名.tell(),查看文件指针(光标)当前所处的位置(以字节为单位)
实例输出结果为:
注1:UTF-8中,中文字符占用3个字节,英文是1个字节。
注2:GBK中,是中文字符是占用2个字节,英文是1个字节。
(2)移动指针的位置变量名.seek()
变量名.seek(),表示把指针(光标)移动到文件指定的位置
实例输出结果为:
注1:变量名.seek(0),表示把指针(光标)移动到文件开头的位置
2、文件打开的第二种方式(with as )
with as,使用这个方式打开和操作文件时,不需要close函数来保存和关闭文件,会自动分配资源和释放资源以及保存关闭文件。
语法格式:
实例输出结果为:
file 对象常用的函数
file 对象使用 open 函数来创建,下表列出了 file 对象常用的函数:
序号 | 方法 | 描述 |
1 | file.close() | 关闭文件。关闭后文件不能再进行读写操作。 |
2 | file.flush() | 刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。 |
3 | file.fileno() | 返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。 |
4 | file.isatty() | 如果文件连接到一个终端设备返回 True,否则返回 False。 |
5 | file.next() | Python 3 中的 File 对象不支持 next() 方法。返回文件下一行。 |
6 | file.read([size]) | 从文件读取指定的字节数,如果未给定或为负则读取所有。 |
7 | file.readline([size]) | 读取整行,包括 "\n" 字符。 |
8 | file.readlines([sizeint]) | 读取所有行并返回列表,若给定sizeint>0,返回总和大约为sizeint字节的行, 实际读取值可能比 sizeint 较大, 因为需要填充缓冲区。 |
9 | file.seek(offset[, whence]) | 移动文件读取指针到指定位置 |
10 | file.tell() | 返回文件当前位置。 |
11 | file.truncate([size]) | 从文件的首行首字符开始截断,截断文件为 size 个字符,无 size 表示从当前位置截断;截断之后后面的所有字符被删除,其中 windows 系统下的换行代表2个字符大小。 |
12 | file.write(str) | 将字符串写入文件,返回的是写入的字符长度。 |
13 | file.writelines(sequence) | 向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。 |
文件目录操作
在Python中,IO流是用于输入和输出数据的通道。它可以用于读取输入数据或将数据写入输出目标。IO流可以是标准输入/输出流(stdin和stdout),也可以是文件流,网络流等。
Python中 io 模块中常用的类和功能:
StringIO:用于处理文本数据的内存文本流。
BytesIO:用于处理二进制数据的内存二进制流。
TextIOWrapper:用于将二进制流包装为文本流,支持字符编码。
BufferedIOBase:为所有缓冲 I/O 类提供基类。
RawIOBase:为原始 I/O 类提供基类。
1、文件流
文件流是一种特殊类型的IO流,用于读取和写入文件。文件流可以打开文件,并允许我们通过读取和写入操作来访问文件的内容。Python提供了许多内置函数和模块来处理文件流。
(1)StringIO
在内存中打开一个文件流,如同打开一个文件。文件流有getvalue方法可以获取内容。
实例输出结果为:
注1:StringIO 是一个内存中的文件对象,它允许你像使用文件一样使用字符串,这对于需要处理文本数据的场景非常有用。如测试(可以用 StringIO 来模拟文件操作,方便进行单元测试)、数据处理(在需要动态生成文本数据的场景中,可以使用 StringIO 来构建字符串)、日志记录(在程序中,可以将日志信息写入 StringIO,然后一次性处理这些信息)。
注2:通过 StringIO,您可以在内存中有效地处理字符串数据,减少对磁盘的读写操作,提高程序的性能。
(2)BytesIO
BytesIO 和StringIO类似,区别是内容都是二进制的字符串,主要用来存储图像、 音频、 视频等,使用 BytesIO 可以方便地创建、读取和写入二进制数据,而无需实际地与磁盘文件交互。
实例输出结果为:
注1:BytesIO主要用于字节流,而不是文本流,如处理二进制数据(处理图像、音频、视频等二进制数据)、网络通信(在网络编程中,使用 BytesIO 来模拟套接字的读写操作)、文件上传/下载(在处理文件上传、下载时,可以使用 BytesIO 来处理内存中的文件数据,而无需将文件写入磁盘)。
2、文件目录操作
目录是存放文件或文件夹的一种包(又叫做是文件夹)
文件夹是计算机术语,是用来组织和管理磁盘文件的一种数据结构。
os模块是python中整理文件和目录(文件夹)最为常用的模块,该模块提供了非常丰富的函数用来操作文件和目录。
(1)路径操作
1)os.getcwd()
获取(查看)当前py文件所在的目录的绝对路径
实例输出结果为:
2) os.chdir(r'需要切换到的路径')
切换到你指定的目录的路径内部
实例输出结果为:
注1:os.chdir() 函数可以更改当前工作目录,但它并不会移动 Python 文件本身。os.chdir() 只是改变了 Python 运行时的当前工作目录,文件仍然保留在它原来的位置。
注2:os.chdir() 函数可以使用一个脚本在不同的目录下执行多个操作,可以使用相对路径轻松地访问不同的目录下的文件,而不必每次都使用绝对路径。
实例输出结果为:
(2)创建文件目录
1)os.mkdir(r'路径')
创建单个目录(文件夹),通常是你给出的路径的最后一层名字创建为一个新的目录
实例输出结果为:
注1:mkdir只能创建一个不存在的名字,若是os.mkdir(r'D:\蓝天\test3\d'),但是test3和d都不存在,则执行该代码会报错。
2)os.makedirs(r'路径')
创建多个目录(文件夹)
实例输出结果为:
(3)修改文件(目录)的名字和位置
1)os.rename(r'旧文件(目录)路径', r'新文件(目录)路径')
把旧文件(目录)的名字和路径修改成第二个参数的位置和名字,对于文件来说,rename就是进行剪切,名字可以改,后缀也可以改,对于目录(文件夹)来说,rename就是进行剪切,名字也可以改。
(4)删除文件(目录)
1)os.remove(r'路径')
删除指定路径的文件
注1:若文件不存在会报错
2)os.rmdir(r'路径')
删除指定路径的单个空目录
注1:所删除的目录必须是空文件夹否则会报错
注2:os.remove(r'路径')和os.rmdir(r'路径')的操作在删除之后的文件不会返回到回收站里面,如果想恢复可以下载恢复软件来恢复误删的文件
(5)其他操作
1)os.system('cmd')
调用系统命令打开命令提示符窗口
实例输出结果为:
os 模块方法汇总表
序号 | 方法 | 描述 |
1 | os.access(path, mode) | 检验权限模式 |
2 | os.chdir(path) | 改变当前工作目录 |
3 | os.chflags(path, flags) | 设置路径的标记为数字标记。 |
4 | os.chmod(path, mode) | 更改权限 |
5 | os.chown(path, uid, gid) | 更改文件所有者 |
6 | os.chroot(path) | 改变当前进程的根目录 |
7 | os.close(fd) | 关闭文件描述符 fd |
8 | os.closerange(fd_low, fd_high) | 关闭所有文件描述符,从 fd_low (包含) 到 fd_high (不包含), 错误会忽略 |
9 | os.dup(fd) | 复制文件描述符 fd |
10 | os.dup2(fd, fd2) | 将一个文件描述符 fd 复制到另一个 fd2 |
11 | os.fchdir(fd) | 通过文件描述符改变当前工作目录 |
12 | os.fchmod(fd, mode) | 改变一个文件的访问权限,该文件由参数fd指定,参数mode是Unix下的文件访问权限。 |
13 | os.fchown(fd, uid, gid) | 修改一个文件的所有权,这个函数修改一个文件的用户ID和用户组ID,该文件由文件描述符fd指定。 |
14 | os.fdatasync(fd) | 强制将文件写入磁盘,该文件由文件描述符fd指定,但是不强制更新文件的状态信息。 |
15 | os.fdopen(fd[, mode[, bufsize]]) | 通过文件描述符 fd 创建一个文件对象,并返回这个文件对象 |
16 | os.fpathconf(fd, name) | 返回一个打开的文件的系统配置信息。name为检索的系统配置的值,它也许是一个定义系统值的字符串,这些名字在很多标准中指定(POSIX.1, Unix 95, Unix 98, 和其它)。 |
17 | os.fstat(fd) | 返回文件描述符fd的状态,像stat()。 |
18 | os.fstatvfs(fd) | 返回包含文件描述符fd的文件的文件系统的信息,Python 3.3 相等于 statvfs()。 |
19 | os.fsync(fd) | 强制将文件描述符为fd的文件写入硬盘。 |
20 | os.ftruncate(fd, length) | 裁剪文件描述符fd对应的文件, 所以它最大不能超过文件大小。 |
21 | os.getcwd() | 返回当前工作目录 |
22 | os.getcwdb() | 返回一个当前工作目录的Unicode对象 |
23 | os.isatty(fd) | 如果文件描述符fd是打开的,同时与tty(-like)设备相连,则返回true, 否则False。 |
24 | os.lchflags(path, flags) | 设置路径的标记为数字标记,类似 chflags(),但是没有软链接 |
25 | os.lchmod(path, mode) | 修改连接文件权限 |
26 | os.lchown(path, uid, gid) | 更改文件所有者,类似 chown,但是不追踪链接。 |
27 | os.link(src, dst) | 创建硬链接,名为参数 dst,指向参数 src |
28 | os.listdir(path) | 返回path指定的文件夹包含的文件或文件夹的名字的列表。 |
29 | os.lseek(fd, pos, how) | 设置文件描述符 fd当前位置为pos, how方式修改: SEEK_SET 或者 0 设置从文件开始的计算的pos; SEEK_CUR或者 1 则从当前位置计算; os.SEEK_END或者2则从文件尾部开始. 在unix,Windows中有效 |
30 | os.lstat(path) | 像stat(),但是没有软链接 |
31 | os.major(device) | 从原始的设备号中提取设备major号码 (使用stat中的st_dev或者st_rdev field)。 |
32 | os.makedev(major, minor) | 以major和minor设备号组成一个原始设备号 |
33 | os.makedirs(path[, mode]) | 递归文件夹创建函数。像mkdir(), 但创建的所有intermediate-level文件夹需要包含子文件夹。 |
34 | os.minor(device) | 从原始的设备号中提取设备minor号码 (使用stat中的st_dev或者st_rdev field )。 |
35 | os.mkdir(path[, mode]) | 以数字mode的mode创建一个名为path的文件夹.默认的 mode 是 0777 (八进制)。 |
36 | os.mkfifo(path[, mode]) | 创建命名管道,mode 为数字,默认为 0666 (八进制) |
37 | os.mknod(filename[, mode=0600, device]) | 创建一个名为filename文件系统节点(文件,设备特别文件或者命名pipe)。 |
38 | os.open(file, flags[, mode]) | 打开一个文件,并且设置需要的打开选项,mode参数是可选的 |
39 | os.openpty() | 打开一个新的伪终端对。返回 pty 和 tty的文件描述符。 |
40 | os.pathconf(path, name) | 返回相关文件的系统配置信息。 |
41 | os.pipe() | 创建一个管道. 返回一对文件描述符(r, w) 分别为读和写 |
42 | os.popen(command[, mode[, bufsize]]) | 从一个 command 打开一个管道 |
43 | os.read(fd, n) | 从文件描述符 fd 中读取最多 n 个字节,返回包含读取字节的字符串,文件描述符 fd对应文件已达到结尾, 返回一个空字符串。 |
44 | os.readlink(path) | 返回软链接所指向的文件 |
45 | os.remove(path) | 删除路径为path的文件。如果path 是一个文件夹,将抛出OSError; 查看下面的rmdir()删除一个 directory。 |
46 | os.removedirs(path) | 递归删除目录。 |
47 | os.rename(src, dst) | 重命名文件或目录,从 src 到 dst |
48 | os.renames(old, new) | 递归地对目录进行更名,也可以对文件进行更名。 |
49 | os.rmdir(path) | 删除path指定的空目录,如果目录非空,则抛出一个OSError异常。 |
50 | os.stat(path) | 获取path指定的路径的信息,功能等同于C API中的stat()系统调用。 |
51 | os.stat_float_times([newvalue]) | 决定stat_result是否以float对象显示时间戳 |
52 | os.statvfs(path) | 获取指定路径的文件系统统计信息 |
53 | os.symlink(src, dst) | 创建一个软链接 |
54 | os.tcgetpgrp(fd) | 返回与终端fd(一个由os.open()返回的打开的文件描述符)关联的进程组 |
55 | os.tcsetpgrp(fd, pg) | 设置与终端fd(一个由os.open()返回的打开的文件描述符)关联的进程组为pg。 |
56 | os.tempnam([dir[, prefix]]) | Python3 中已删除。返回唯一的路径名用于创建临时文件。 |
57 | os.tmpfile() | Python3 中已删除。返回一个打开的模式为(w+b)的文件对象 .这文件对象没有文件夹入口,没有文件描述符,将会自动删除。 |
58 | os.tmpnam() | Python3 中已删除。为创建一个临时文件返回一个唯一的路径 |
59 | os.ttyname(fd) | 返回一个字符串,它表示与文件描述符fd 关联的终端设备。如果fd 没有与终端设备关联,则引发一个异常。 |
60 | os.unlink(path) | 删除文件路径 |
61 | os.utime(path, times) | 返回指定的path文件的访问和修改的时间。 |
62 | os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]]) | 输出在文件夹中的文件名通过在树中游走,向上或者向下。 |
63 | os.write(fd, str) | 写入字符串到文件描述符 fd中. 返回实际写入的字符串长度 |
64 | os.path 模块 | 获取文件的属性信息。 |
65 | os.pardir() | 获取当前目录的父目录,以字符串形式显示目录名。 |
66 | os.replace() | 重命名文件或目录。 |
67 | os.startfile() | 用于在 Windows 上打开一个文件或文件夹。 |
练习题
1、以下选项中,【不是】创建一个新文件的模式的是()(多选题)
A.w+
B.r+
C.a
D.r
2、写代码实现:(可以是在当前目录)创建文件data.txt, 文件共10行,每行存放一个1~100之间的随机整数,然后读取文件内容。
'''