IO操作

简介

IO操作,即输入(Input)输出(Output)操作,是指数据在计算机内存和外部设备或者网络间的传输过程。大部分的编程语言都支持IO操作,例如C#、C、Java等,python同样支持IO操作

文件操作

open函数

open(path,mode) 以mode模式打开path路径下的文件,例:XXX/XXX.txt

mode模式有很多种:

模式 描述
t 文本模式 (默认)。
x 写模式,新建一个文件,如果该文件已存在则会报错。
b 二进制模式。
+ 打开一个文件进行更新(可读可写)。
U 通用换行模式(Python 3 不支持)。
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。
f = open("test1.txt","w+")
f.close()

image

file对象

调用open()函数后会返回一个对象,跟C#中文件打开后会返回一个FileInfo对象一样,可以通过对file对象的操作来控制文件的操作。

常用的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)向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符。
f = open("test1.txt","w+")
f.write("哈哈哈,这是一个测试内容\n这是第二行内容")
f.flush()
f.seek(0,0)
lines = f.readlines()
for v in lines:
    print(v)
    
print(f.tell())
f.close()

image

os模块

os模块是python中与操作系统交互的重要模块,通过os模块可以执行文件操作、目录操作、环境变量和进程管理等任务,且os模块是跨平台模块,在MAC、Linux、Windows上都可以使用。

序号 方法 描述
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.fchdir(fd) 通过文件描述符改变当前工作目录
10 os.fchmod(fd, mode) 改变一个文件的访问权限,该文件由参数fd指定,参数mode是Unix下的文件访问权限。
11 os.fchown(fd, uid, gid) 修改一个文件的所有权,这个函数修改一个文件的用户ID和用户组ID,该文件由文件描述符fd指定。
12 os.fdatasync(fd) 强制将文件写入磁盘,该文件由文件描述符fd指定,但是不强制更新文件的状态信息。
13 os.fdopen(fd[, mode[, bufsize]]) 通过文件描述符 fd 创建一个文件对象,并返回这个文件对象
14 os.getcwd() 返回当前工作目录
15 os.getcwdb() 返回一个当前工作目录的Unicode对象
16 os.listdir(path) 返回path指定的文件夹包含的文件或文件夹的名字的列表。
17 os.link(src, dst) 创建硬链接,名为参数 dst,指向参数 src
18 os.makedirs(path[, mode]) 递归文件夹创建函数。像mkdir(), 但创建的所有intermediate-level文件夹需要包含子文件夹。
19 os.open(file, flags[, mode]) 打开一个文件,并且设置需要的打开选项,mode参数是可选的
20 os.remove(path) 删除路径为path的文件。如果path 是一个文件夹,将抛出OSError; 查看下面的rmdir()删除一个 directory。
21 os.removedirs(path) 递归删除目录。
22 os.rename(src, dst) 重命名文件或目录,从 src 到 dst
23 os.renames(old, new) 递归地对目录进行更名,也可以对文件进行更名。
24 os.rmdir(path) 删除path指定的空目录,如果目录非空,则抛出一个OSError异常。
25 os.unlink(path) 删除文件路径
26 os.utime(path, times) 返回指定的path文件的访问和修改的时间。
27 os.write(fd, str) 写入字符串到文件描述符 fd中. 返回实际写入的字符串长度
28 os.path 模块获取文件的属性信息。
29 os.pardir() 获取当前目录的父目录,以字符串形式显示目录名。
30 os.replace() 重命名文件或目录。
31 os.startfile() 用于在 Windows 上打开一个文件或文件夹。
import os

print(os.getcwd())
os.chdir("Project")
print(os.getcwd())
os.mkdir("TestDir")
print(os.listdir(os.getcwd()))
if(os.path.exists("TestDir") and os.access("TestDir",os.R_OK)):
    os.rmdir("TestDir")
print(os.listdir(os.getcwd()))

image

posted @ 2025-06-10 20:38  请明月  阅读(24)  评论(0)    收藏  举报