open函数

文件描述符fd,struct files_struct

安稳与你 提交于 2019-12-06 04:16:37
程序可以理解为硬盘上的普通二进制文件;进程是加载到内存中的二进制文件,除了加载到内存中的二进制文件外,还附有所有对于该二进制文件 描述信息的结构体 ,描述该进程的结构体叫 PCB(进程控制块) ,在这就不在讨论。对于程序与进程,也就可以简单地理解为是否有PCB(进程控制块)。下面我们再来讨论PCB与file_struct的关系。 在每一个PCB中,都有一个文件描述符表,通过文件描述符索引指向file_struct(系统打开文件表) 。 文件描述符在形式上是一个非负整数,实际上, 它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表 ,当程序打开一个现有文件或创建一个新文件时,内核向进程返回一个文件描述符。也就是说,一个程序能够访问文件是因为给这个程序分配了文件描述符。 下面我们来讨论file_struct里面具体有哪些内容, file结构体定义在linux系统中的(/kernels/include/linus/fs.h)文件中。 file_struct结构如下 struct file {   union {   struct list_head fu_list; //文件对象链表指针linux/include/linux/list.h   struct rcu_head fu_rcuhead; //RCU(Read-Copy Update)是Linux 2

[apue] 神奇的 Solaris pipe

北战南征 提交于 2019-12-05 19:15:06
说到 pipe 大家可能都不陌生,经典的pipe调用配合fork进行父子进程通讯,简直就是Unix程序的标配。 然而Solaris上的pipe却和Solaris一样是个奇葩(虽然Solaris前途黯淡,但是不妨碍我们从它里面挖掘一些有价值的东西), 有着和一般pipe诸多的不同之处,本文就来说说Solaris上神奇的pipe和一般pipe之间的异同。 1.solaris pipe 是全双工的 一般系统上的pipe调用是半双工的,只能单向传递数据,如果需要双向通讯,我们一般是建两个pipe分别读写。像下面这样: 1 int n, fd1[2], fd2[2]; 2 if (pipe (fd1) < 0 || pipe(fd2) < 0) 3 err_sys ("pipe error"); 4 5 char line[MAXLINE]; 6 pid_t pid = fork (); 7 if (pid < 0) 8 err_sys ("fork error"); 9 else if (pid > 0) 10 { 11 close (fd1[0]); // write on pipe1 as stdin for co-process 12 close (fd2[1]); // read on pipe2 as stdout for co-process 13 while (fgets

文件IO

允我心安 提交于 2019-12-05 17:56:58
目录 文件IO 文件描述符 获取最大支持的描述符 open/openat/creat close lseek off_t 类型说明 lseek与OAPPEND的区别 内核维护的文件信息 dup/dup2 FD_CLOEXEC 缓存同步到存储 fcntl改变文件属性 ioctl 文件截断 代码附录 获取最大文件描述符 使用openat来实现一种相对路径的打开 lseek测试管道等 lseek文件跨越写 fcntl获取文件状态 title: 文件IO date: 2019/11/23 10:49:52 toc: true --- 文件IO 文件描述符 文件描述符是非负的整数,一般是系统调用的,这个与 file_struct 区别开来. STDIN_FILENO, STDOUT_FILENO, and STDERR_FILENO 被定义在 <unistd.h> 获取最大支持的描述符 新的 linux 已经不支持 OPEN_MAX 来直接获取这个最大描述符了, sysconf(_SC_OPEN_MAX) shell 下这么查看,其中的 open files (-n) 1024 就是了 reallin@ubuntu:/work/pan/apue$ ulimit -a core file size (blocks, -c) 0 data seg size (kbytes, -d)

笔记||Python3之文件的读写

你离开我真会死。 提交于 2019-12-05 16:35:25
【文件的读模式】 文件的对象: 文件的读写通过文件操作对象进行。 Python2 ----- File Python3 ----- TextIOWrapper 文件的打开: 内置函数open(file,mode) --- 打开文件,获取文件操作对象。 一定要有file文件路径(路径、文件名、文件格式) 否则报错。 fo = open(fileDir) ----- 只读 路径的写法 :①绝对路径 ----- 从根目录开始的 ②相对路径 ------ . /当前位置 .. / 上一级 fileDir = 'C:/test.txt' fileDir = 'C:\\test.txt' fileDir = r'C:\test.txt' --- 取消转义 读模式: 如果该文件不存在会报错! fo = open(dileDir, 'r') <==> fo = open(fileDir) fo.tell() -------------- 从0开始 显示指针位置 fo.read(2) ------------ 读2个字符 fo.read() -------------- 读全部内容 文件中的换行是2个长度 \n 'a\nb' ----- 字符串中是一个 fo.close() --- 关闭文件 移动文件指针位置 :seek() 0模式 : --- 绝对位置模式 fo.seek(1,0) 从0开始

python学习-day3 文件操作

*爱你&永不变心* 提交于 2019-12-05 06:21:37
day3 1.文件读写 2.函数 文件操作 r read 只读,不写默认为r w write 只写 a 追加,能写不能读,不会清空以前的内容 f = open('a.txt',’w',encoding='utf-8') f.read() #read直接读所有内容; f.readlines() #读取所有文件内容,返回一个list,元素是每行的数据看,大文件时不要用,会把文件内容都读到内存中 f.readline() #每次读一行内容 f.close() #关闭文件 #文件指针 f = open('b.txt','w') f.write('abcdcde\n') #只能写字符串 f.writelines(['abc','12344']) #writelines可以写list,或者集合,自动循环读取每个元素 f.close() r 能读,不能写,打开不存在的文件会报错 w 能写,不能都,清空以前的内容 a 能写,不会清空以前的内容,不能读,追加 r+ 读写模式 w+ 写读模式 a+ 追加读模式 #r+模式,能读能写,打开不存在的文件会报错 #read()和write()位置不同,先读和后读位置不一样 f = open('a.txt','r+',encoding='utf-8) print(f.read()) #文件指针读完到最后 f.write('r+模式111') f.close()

python 文件读写操作(24)

爷,独闯天下 提交于 2019-12-05 05:03:58
以前的代码都是直接将数据输出到控制台,实际上我们也可以通过读/写文件的方式读取/输出到磁盘文件中,文件读写简称I/O操作。文件I/O操作一共分为四部分:打开(open)/读取(read)/写入(write)/关闭(close)…… 一.文件的打开 open 在python中打开文件使用函数open(),该函数返回文件句柄,具体使用方法如下: file = open("文件名","打开文件模式") # 示例代码: # 打开d:/1.txt文件,如果d盘没有这个文件,会自动在d盘创建1.txt的空白文件,file是返回的文件句柄供读/写/关闭文件操作 file = open("d:/1.txt","wb") 其中,打开文件模式有以下几种类型: 二.文件的关闭 close 文件在打开读写之后记得要有关闭操作,就好比蹲完坑得擦屁股,关闭文件使用close()函数。注意:文件关闭之后,不能在继续对文件读写操作,如果需要读写操作需要重新open()打开文件。 file.close() # 关闭文件 三.文件的读取 read 文件打开之后,可以通过返回的文件句柄读取文件中的内容,文件读取有以下几个函数: 1.file.read( [count] ) — count表示需要读取的文字长度,conut是缺省参数,如果没有设置count值,默认读取整个文件所有内容,该函数返回读取到的内容; 2

python的文件操作及简单的用例

余生颓废 提交于 2019-12-05 04:53:35
一、python的文件操作介绍   1、文件操作函数介绍      1 open() 打开一个文件  语法:open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)  含义:    file: 必需,文件路径(相对或者绝对路径)。    mode: 可选,文件打开模式    buffering: 设置缓冲    encoding: 一般使用utf8    errors: 报错级别    newline: 区分换行符    closefd: 传入的file参数类型    opener:  使用:open() 函数常用形式是接收三个参数:文件名(file)和模式(mode)和字符编码(encoding)。  open("./file/login.txt", encoding="utf-8", mode="rb+")   2 write() 将字符串写入文件,返回的是写入的字符长度 3 read() 从文件读取指定的字节数,如果未给定或为负则读取所有。 4 readline() 读取整行,包括 "\n" 字符。(通常使用此方法进行读取) 5 readlines() 读取所有行并返回列表,若给定sizeint>0,则是设置一次读多少字节

Python3 open() 函数

回眸只為那壹抹淺笑 提交于 2019-12-05 04:25:27
Python3 open() 函数 Python open() 函数用于打开一个文件,并返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。 注意: 使用 open() 函数一定要保证关闭文件对象,即调用 close() 函数。 open() 函数常用形式是接收两个参数:文件名(file)和模式(mode)。 open(file, mode='r') 完整的语法格式为: open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None) 参数说明: file: 必需,文件路径(相对或者绝对路径)。 mode: 可选,文件打开模式 buffering: 设置缓冲 encoding: 一般使用utf8 errors: 报错级别 newline: 区分换行符 closefd: 传入的file参数类型 opener: mode 参数有: 模式 描述 t 文本模式 (默认)。 x 写模式,新建一个文件,如果该文件已存在则会报错。 b 二进制模式。 + 打开一个文件进行更新(可读可写)。 U 通用换行模式(不推荐)。 r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 rb

08. 文件操作

妖精的绣舞 提交于 2019-12-05 00:39:00
08. 万恶之源 - 文件操作 本节主要内容: 初识 文件操作 只读(r, rb) 只写(w, wb) 追加(a, ab) r+读写 w+写读 a+写读(追加写读) 其他操作 方法 文件的修改以及另 一种打开 文件句句柄的 方式 主要内容: 一. 初识 文件操作 使 用python来读写 文件是非常简单的操作. 我们使 用open()函数来打开 一个 文件, 获取到 文件句句柄. 然后通过 文件句句柄就可以进 行行各种各样的操作了了. 根据打开 方式的不同能够执 行行的操作也会有相应的差异. 打开 文件的 方式: r, w, a, r+, w+, a+, rb, wb, ab, r+b, w+b, a+b 默认使 用的是r(只读)模式 二. 只读操作(r, rb) f = open("护 士少妇嫩模.txt",mode="r", encoding="utf-8") content = f.read() print(content) f.close() 需要注意encoding表 示编码集. 根据 文件的实际保存编码进 行行获取数据, 对于我们 而 言. 更更多的是utf-8. rb. 读取出来的数据是bytes类型, 在rb模式下. 不能选择encoding字符集. f = open("护 士少妇嫩模.txt",mode="rb" ) content = f.read()

python学习日记——文件及数据库

﹥>﹥吖頭↗ 提交于 2019-12-04 21:07:23
一、文件处理 1.文本文件(or二进制文件) with通过__enter__方法初始化,然后在__exit__中做善后以及处理异常,所以使用with处理的对象必须有__enter__()和__exit__()这两个方法。 下面代码运行结果为True,证明实体f对应的类中实现了这两个方法,所以可以用with进行上下文管理 f=open("text1.txt","r+",encoding="utf-8") print("__exit__" in dir(f) and "__enter__" in dir(f))   下面是open方法及其传参,返回的是一个文件对象 open(file, mode='r', buffering=None, encoding=None, errors=None, newline=None, closefd=True) open方法中各个参数的解释 file:传入的是文件路径的字符串 mode:文件模式,及打开文件后对文件的操作(r打开读取(默认);w打开进行写入,首先截断文件;x创建一个新文件并打开它进行写入;a如果文件存在,则附加到文件的结尾处。b二进制模式;t文本模式(默认) buffering:缓冲区大小设置 encoding:文件打开的编码,默认是系统编码 errors:一个函数,打开文件失败时触发    来源: https://www