(header) # 3:遍历列表,将每一行的数据写入csv for p in person: writer.writerow(p) 报错分析 ValueError: I/O operation...on closed file.依旧是使用单词意思来分析报错原因 ValueError值错误 closed file关闭的文件 通过分析可以得出:with open处理了已经被关闭的数据。...使用with open打开文件,如果语句在with open之外是无效的,因为文件已经被关闭了 居然:那应该怎么解决呢 hacker: 解决方案 其实解决方法很简单,只需要将你要处理的数据都加到with...open里,改一下代码缩进即可完美解决 改进后的代码: import csv person = [('xxx', 18, 180), ('yyy', 18, 182), ('zzz', 19...) # 3:遍历列表,将每一行的数据写入csv for p in person: writer.writerow(p) 完美解决 结束语 会持续更新专栏《hacker的错误集
文件是无处不在的,无论我们使用哪种编程语言,处理文件对于每个程序员都是必不可少的 文件处理是一种用于创建文件、写入数据和从中读取数据的过程,Python 拥有丰富的用于处理不同文件类型的包,从而使得我们可以更加轻松方便的完成文件处理的工作...通常当我们处理不再需要使用的,需要立即关闭的对象(例如文件、数据库和网络连接)时,强烈推荐使用 with 语句 这里需要注意的是,即使在退出 with 上下文管理器块之后,我们也可以访问 f 变量,但是该文件是已关闭状态...但是此时是不可能从文件中读取内容或写入文件的,关闭文件时,任何访问其内容的尝试都会导致以下错误: f.read() Output: ----------------------------------...: I/O operation on closed file....但是有时数据采用 CSV 格式,数据专业人员通常会检索所需信息并操作 CSV 文件的内容 接下来我们将使用 CSV 模块,CSV 模块提供了有用的方法来读取存储在 CSV 文件中的逗号分隔值。
灵活性:Python 中的文件处理非常灵活,因为它允许您处理不同的文件类型(例如文本文件、二进制文件、CSV 文件等),并对文件执行不同的操作(例如读取、写入、追加等)。...如果文件不存在,则引发 I/O 错误。r+打开文件进行读取和写入。如果文件不存在,则引发 I/O 错误。w打开文件进行写入。如果文件已存在,则截断该文件。如果新文件不存在,则创建新文件。...w+打开文件进行读取和写入。如果文件已存在,则截断该文件。如果新文件不存在,则创建新文件。a打开文件进行写入。正在写入的数据将插入到文件的末尾。如果新文件不存在,则创建新文件。...a+打开文件进行读取和写入。正在写入的数据将插入到文件的末尾。如果新文件不存在,则创建新文件。rb打开文件以二进制格式读取。如果文件不存在,则引发 I/O 错误。rb打开文件以二进制格式进行读写。...如果文件不存在,则引发 I/O 错误。wb打开文件以二进制格式写入。如果文件已存在,则截断该文件。如果新文件不存在,则创建新文件。wb+打开文件以二进制格式进行读写。如果文件已存在,则截断该文件。
2、OS 3、遍历文件夹 4、文件读取 5、JSON序列化与反序列化 序列化示例1:dict(map) 6、文件I/O(XML) XML结构示例: 读取示例: 7、CSV前言 8、EXCEL操作...如该文件已存在,文件指针将会放在文件的结尾,即新的内容将会被写入到 已有内容之后。如该文件不存在,创建新文件进行写入 a+ 打开一个文件用于读写。如该文件已存在,文件指针将会放在文件的结尾。...6、文件I/O(XML) XML虽然比JSON复杂,在Web中应用也不如以前多了,不过仍有很多地方在用,所以,有必要了解如何操作XML。...csv # 文件获取 file = open('test.csv', 'w+', encoding="gbk") # 写入操作 writer = csv.writer(file) # 按照行写入...')] # 写入多行记录 writer.writerows(data) # 刷新文件 file.flush() # 关闭文件流 file.close() 8、EXCEL操作 Python读写Excel文档需要安装和使用
要注意其实python有三种I/O模式, text I/O, binary I/O and raw I/O 我这里只是列举了一些常用的Text I/O模式下的文件对象方法 1.open() open...2.close() close() 方法用于关闭一个已打开的文件。关闭后的文件不能再进行读写操作, 否则会触发 ValueError 错误。 close() 方法允许调用多次。...当 file 对象,被引用到操作另外一个文件时,Python 会自动关闭之前的 file 对象。 ? 图源官网文档 ?...图源官网文档 3.flush() flush()方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。...图源官网文档 4.fileno() fileno() 方法返回一个整型的文件描述符(file descriptor FD 整型),可用于底层操作系统的 I/O 操作 ?
close()方法 fileObject.close() File 对象的 close()方法刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入。...当一个文件对象的引用被重新指定给另一个文件时,Python 会关闭之前的文件。用 close()方法关闭文件是一个很好的习惯。...write()方法不会在字符串的结尾添加换行符('\n');被传递的参数是要写入到已打开文件的内容。...: 以只读的方式打开 os.O_WRONLY: 以只写的方式打开 os.O_RDWR : 以读写的方式打开 os.O_NONBLOCK: 打开时不阻塞 os.O_APPEND: 以追加的方式打开 os.O_CREAT...,返回的是迭代类型 read = csv.reader(csvfile) for i in read: print(i) 运行结果如下图: ?
()函数在没有读取任何数据的情况下达到文件结束条件(EOF)时引发 +-- ImportError # 导入模块/对象失败 | +-- ModuleNotFoundError...| +-- BlockingIOError # 操作将阻塞对象(e.g. socket)设置为非阻塞操作 | +-- ChildProcessError # 在子进程上的操作失败...| +-- ConnectionError # 与连接相关的异常的基类 | | +-- BrokenPipeError # 另一端关闭时尝试写入管道或试图在已关闭写入的套接字上写入...| +-- IsADirectoryError # 在目录上请求文件操作(例如 os.remove()) | +-- NotADirectoryError # 在不是目录的事物上请求目录操作...比如可以像下面这样把相关信息写入到tb.txt文件去。
数据不符合期望格式:ValueError IOError:路径出错 数据储存到文件 业务代码工作流程可以储存到文件中保存下来。...w+ 读取和追加写入(不清除) a 追加写入 打开的文件必须运行关闭!...通过pickle模块的序列化操作我们能够将程序中运行的对象信息保存到文件中去,永久存储;通过pickle模块的反序列化操作,我们能够从文件中创建上一次程序保存的对象。...一、内存中操作: import pickle #dumps 转化为二进制文件 li = [11,22,33] r = pickle.dumps(li) print(r) #loads 将二进制数据编译出来...result = pickle.loads(r) print(result) 二、文件中操作: #dump:以二进制形式打开(读取:rb,写入wb)文件 li = [11,22,33] pickle.dump
行之间无空行十分重要,如果有空行或者数据集中行末有空格,读取数据时一般会出错,引发[list index out of range]错误。PS:已经被这个错误坑过很多次!...使用 python I/O 写入和读取 CSV 文件 使用 PythonI/O 写入 csv 文件 以下是将"birthweight.dat"低出生体重的 dat 文件从作者源处下载下来,并且将其处理后保存到...不仅仅是用 python I/O 进行 csv 数据的读写时,利用其余方法读写 csv 数据,或者从网上下载好 csv 数据集后都需要查看其每行后有没有空格,或者有没有多余的空行。...使用 PythonI/O 读取 csv 文件 使用 python I/O 方法进行读取时即是新建一个 List 列表然后按照先行后列的顺序(类似 C 语言中的二维数组)将数据存进空的 List 对象中,...coord.request_stop() coord.join(threads) ''' 对于使用所有Tensorflow的I/O操作来说开启和关闭线程管理器都是必要的操作 with tf.Session
Python内置异常 Python的异常处理能力是很强大的,它有很多内置异常,可向用户准确反馈出错信息。在Python中,异常也是对象,可对它进行操作。...语句失败时引发 ±- AttributeError # 属性引用或赋值失败 ±- BufferError # 无法执行与缓冲区相关的操作时引发 ±- EOFError # 当input()函数在没有读取任何数据的情况下达到文件结束条件...中,构造函数可能返回子类 | ±- BlockingIOError # 操作将阻塞对象(e.g. socket)设置为非阻塞操作 | ±- ChildProcessError # 在子进程上的操作失败...| ±- ConnectionError # 与连接相关的异常的基类 | | ±- BrokenPipeError # 另一端关闭时尝试写入管道或试图在已关闭写入的套接字上写入 | | ±- ConnectionAbortedError...(例如 os.remove()) | ±- NotADirectoryError # 在不是目录的事物上请求目录操作(例如 os.listdir()) | ±- PermissionError # 尝试在没有足够访问权限的情况下运行操作
1、文件I/O 文件 I/O(Input/Output)是指程序与文件之间进行数据交换的过程。在计算机编程中,文件 I/O 是通过读取和写入文件来实现数据的输入和输出操作。...文件 I/O 主要涉及打开文件、读取文件内容、写入文件内容和关闭文件等操作。 常见的文件 I/O 操作包括使用系统调用(如 open()、read()、write()、close())来进行文件操作。...通过文件 I/O,程序可以从文件中读取数据,对数据进行处理,然后将结果写入文件中,实现数据的持久化存储和处理。...O_NONBLOCK:非阻塞方式打开文件,在没有数据可读取时不阻塞。 O_SYNC:同步写入方式打开文件,对写入文件的每个操作进行同步。...例如,在输出时,数据首先写入到缓冲区,然后在适当的时机才会被刷新到实际的输出设备上,从而减少了系统调用的次数,提高了效率。
-- BlockingIOError 操作将阻塞对象设置为非阻塞操作 | +-- ChildProcessError 子进程上的操作失败 | +-- ConnectionError...与连接相关的异常的基类 | | +-- BrokenPipeError 在已关闭写入的套接字上写入 | | +-- ConnectionAbortedError...在目录上请求文件操作 | +-- NotADirectoryError 在不是目录的事物上请求目录操作 | +-- PermissionError 在没有访问权限的情况下运行操作...+-- TypeError 对类型无效的操作 +-- ValueError 传入无效的参数 | +-- UnicodeError Unicode 相关的错误 |...用户代码生成的警告 +-- FutureWarning 有关已弃用功能的警告的基类 +-- ImportWarning 模块导入时可能出错的警告的基类 +-- UnicodeWarning
break 立即停止循环 while True: break continue 停止当前循环的后续步骤,再做一次循环 while True: continue raise 出错后引发异常 raise ValueError...;它的作用和上下文管理器有关,可以自动关闭打开的文件或线程,不管在处理文件过程中是否发生异常,都能保证 with 语句执行完毕后已经关闭了打开的文件句柄。...TextIOWrapper.writer 向文件写入内容 TextIOWrapper.close 关闭打开的文件,执行保存 TextIOWrapper.seek 设置文件指针位置 TextIOWrapper.tell...返回当前指针位置 os 标准库,和系统操作有关 os.path 判断文件是否已经存在 字符串 由引号(' " ''' """)定义的一组字符 原始字符串 字符串的引号前有字母r 或 R,其内容不会被转义...整数 表示没有小数的数字 浮点数 表示有小数部分的数字,浮点数运算时可能出现精度问题。
IndexError:取序列索引超出范围 KeyError:在字典中找不到指定的Key TypeError:当一个操作或函数被应用于类型不适当的对象时将被引发,传入参数的类型错误(如:传了string...给一个int类型的参数) ValueError:当传入的参数类型正确,但值不正确时引发(如:传入要求范围之外的数值) UnicodeEncodeError:编码错误 UnicodeDecodeError...:解码错误 OSError:调用操作系统函数时报错引发该异常,一般是I/O操作 OS 异常 以下所有异常都是OSError的子类 FileExistsError:文件已存在(如:创建一个文件) FileNotFoundError...:文件找不到(如:open一个文件) PermissionError:没有权限操作文件(如:写入内容到一个正在打开的文件) IsADirectoryError:对目录进行文件操作(如:os.remove...知识点 的代码块,无论是否报异常都会执行 finally finally的作用:一般写清理关闭操作,如:关闭文件、关闭数据库连接等等 若没有 、 continue 、 return 、异常,执行顺序是
Python可以读取任何格式的文本数据。一般分为三个步骤:定义数据文件、创建文件对象、读取文件内容。 定义数据文件 语法 将文件赋值给一个文件对象,为了后续操作更加便捷,减少代码冗余。...w 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。...如果该文件不存在,创建新文件。 ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。...>>> print(fout.tell()) # 输出指针位置 >>> fout.close() # 关闭文件对象 60 由于文件读写时都有可能产生IOError,一旦出错,后面的fout.close...此时使用基于with的文件打开方法,可以自动做上下文管理,而无需单独做close操作,简单又方便: 例1 对单个文件对象操作时: >>> with open( '.
使用Python读写某种特别类型的文件,例如:JSON、CSV、Excel等,一般会有专门的模块。但是,在这里,我们将用Python打开文本文件(.txt)。...若使用Python的open函数,它将返回一个文件对象,此对象将包含一些方法和属性。我们可以使用这些方法和属性获得已打开文件的相关信息,并且,可以使用这些方法来更改所打开的文件。...在添加文本时,至少在Windows 10中,必须在行前添加\n。否则,新的一行将添加到最后一个字符的后面(在文件的最后一行)。...如果我们要添加更多的行,也必须记住这样操作; txtfile.write(‘\nLast line of text, I promise.) txtfile.close() 可以使用文本编辑器(例如,Notepad...以上介绍了以不同的模式读取文件、创建和写入文件、将数据追加到文件的方法,以及如何使用with语句读取文件。
直到遇到 EOF 或读取出错为止,返回读取的字节数和遇到的错误。...Write 方法用于将 p 中的数据写入到对象的数据流中, 返回写入的字节数和遇到的错误。 如果 p 中的数据全部被写入,则 err 应该返回 nil。...使用,在创建文件时如果该文件已存在,则提示错误;open xxx: The file exists....Close 一般用于关闭文件,关闭通道,关闭连接,关闭数据库等 Seeker type Seeker interface { Seek(offset int64, whence int) (ret...,若newname已存在则覆盖原有文件,即删除newname再将oldname改名;注意文件名可携带相对或绝对路径且更改前后文件夹路径应一致,否则会被拒绝操作;注意Windows下路径的“\”需要转义
为了更好的保护内核空间,将程序的运行空间分为内核空间和用户空间,他们运行在不同的级别上,在逻辑上是相互隔离的。...超全面)收藏这一篇就够了 Linux下标准IO的这些操作你清楚吗(内附有详细的介绍和例程) 文章目录 文件I/O简介 文件描述符 文件I/O与标准I/O区别 打开文件(open) 关闭文件(close...函数用来关闭一个打开的文件: #include int close(int fd); 成功时返回0;出错时返回EOF 程序结束时自动关闭所有打开的文件 文件关闭以后不能再对文件进行任何操作...成功时返回实际读取的字节数;出错时返回EOF 读到文件末尾时返回0 buf是接收数据的缓冲区 示例 从指定的文件(文本文件)中读取内容并统计大小 #include ...ssize_t write(int fd,void *buf,size_t count);//buf写入内容;count写入大小 成功时返回实际写入的字节数;出错时返回EOF buf是发送数据的缓冲区
,出错时为NULL int pclose ( FILE * stream ); //返回:成功时为shell的终止状态,出错时为-1 type 参数只能是读或者写中的一种,得到的返回值(标准 I...Mode参数指定文件权限位 Mkfifo函数已隐含指定O_CREAT|O_EXCL。...(3)O_NONBLOCK标志的设置对于write操作的原子性没有影响——原子性完全由所请求的字节数是否小于等于PIPE_BUF决定的。...(i)如果还有1字节空间,那么内核写入该管道或FIFO能容纳数目的数据字节,该数目同时作为来自write的返回值 (ii)如果空间已满,那么立即返回EAGAIN 如果写入一个没有打开着用于读的管道或者...当数据由变长消息构成,并且读出者必须知道这些消息的边界以判定何时已读出单个消息时,这种需求可能发生。下面三种技巧经常用于这个目的: 带内特殊终止序列:许多Unix应用程序使用换行符来分隔每个消息。
领取专属 10元无门槛券
手把手带您无忧上云