Python内置了读写文件的函数,用法和C是兼容的。本节介绍内容大致有:文件的打开/关闭、文件对象、文件的读写等。仅示例介绍 TXT 类型文档的读写,也就是最基础的文件读写,也需要注意编码问题;
open() close() with open(...) as ...
看以下示例就能了解 Python 的 open() 及 close() 函数。这边调用 read()方法可以一次读取文件的全部内容,Python把内容读到内存,用一个str对象表示,具体使用参见下文。
在 E 盘 python_file 文件夹下新建一 a.txt,输入随意,如下:
Python *** 作 打开及关闭方式 如下:
注意 open() 之后 一定要 close()。但由于文件读写时都可能产生IOError,为了保证无论是否出错都能正确地关闭文件,我们用 try ... finally 来实现:
python 简化了改写法,即用 with open(...) as ... ; 建议之后文件读写都用该写法:
上面,你肯定注意到了参数 "r";该参数决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
相关参数:
File 对象
file 为一对象,它有一些内置属性,如下
file对象的属性:
read() read(size) readline() readlines()
之前的例子已经接触到了 read() 函数,该函数会会一次性读取文件的全部内容,如果能确保文件的大小,自然可以。但若文件过大,内存就爆了,所以,可以反复调用read(size)方法,每次最多读取size个字节的内容;也可调用 readline() 每次读取一行内容;而调用readlines()可以一次读取所有内容并按行返回list。总之,根据需求来。仅以 txt 文件为例,其他的文件读取需要特殊处理;另外,文件的格式编码方式也需要注意;这边仅介绍读取方法,其他的会出专题来学习。
在D:\python_file 下新建 poet.txt;示例如下,由于一个中文会占多个字节,故read(size) 部分会乱码,如:
write()
写文件和读文件是一样的,唯一区别是调用open()函数时,传入标识符'w'或者'wb'表示写文本文件或写二进制文件;'a' 对应的表示追加等。
如下示例,由于 write.txt 文件不存在,创建该文件并写入:
在上例基础上,继续,该文件被重写:
继续,这次使用追加,会在文件结尾追加:
https://blog.csdn.net/msspark/article/details/86745391
https://www.cnblogs.com/tianyiliang/p/8192703.html
https://www.cnblogs.com/camilla/p/7234657.html
https://blog.csdn.net/songlh1234/article/details/83316468
https://www.php.cn/python-tutorials-412484.html
https://blog.csdn.net/weay/article/details/80946152
https://blog.csdn.net/xc_zhou/article/details/81044836
Java.io包中包括许多类提供许多有关文件的各个方面 *** 作。\x0d\x0a1 输入输出抽象基类InputStream/OutputStream ,实现文件内容 *** 作的基本功能函数read()、 write()、close()、skip()等;一般都是创建出其派生类对象(完成指定的特殊功能)来实现文件读写。在文件读写的编程过程中主要应该注意异常处理的技术。 \x0d\x0a2 FileInputStream/FileOutputStream: \x0d\x0a用于本地文件读写(二进制格式读写并且是顺序读写,读和写要分别创建出不同的文件流对象); \x0d\x0a本地文件读写编程的基本过程为: \x0d\x0a① 生成文件流对象(对文件读 *** 作时应该为FileInputStream类,而文件写应该为FileOutputStream类); \x0d\x0a② 调用FileInputStream或FileOutputStream类中的功能函数如read()、write(int b)等)读写文件内容; \x0d\x0a③ 关闭文件(close())。 \x0d\x0a3 PipedInputStream/PipedOutputStream: \x0d\x0a用于管道输入输出(将一个程序或一个线程的输出结果直接连接到另一个程序或一个线程的输入端口,实现两者数据直接传送。 *** 作时需要连结); \x0d\x0a4管道的连接: \x0d\x0a方法之一是通过构造函数直接将某一个程序的输出作为另一个程序的输入,在定义对象时指明目标管道对象 \x0d\x0aPipedInputStream pInput=new PipedInputStream() \x0d\x0aPipedOutputStream pOutput= new PipedOutputStream(pInput) \x0d\x0a方法之二是利用双方类中的任一个成员函数 connect()相连接 \x0d\x0aPipedInputStream pInput=new PipedInputStream() \x0d\x0aPipedOutputStream pOutput= new PipedOutputStream() \x0d\x0apinput.connect(pOutput) \x0d\x0a5 管道的输入与输出: \x0d\x0a输出管道对象调用write()成员函数输出数据(即向管道的输入端发送数据);而输入管道对象调用read()成员函数可以读起数据(即从输出管道中获得数据)。这主要是借助系统所提供的缓冲机制来实现的。 \x0d\x0a6随机文件读写: \x0d\x0aRandomAccessFile类(它直接继承于Object类而非InputStream/OutputStream类),从而可以实现读写文件中任何位置中的数据(只需要改变文件的读写位置的指针)。 \x0d\x0a随机文件读写编程的基本过程为: \x0d\x0a① 生成流对象并且指明读写类型; \x0d\x0a② 移动读写位置; \x0d\x0a③ 读写文件内容; \x0d\x0a④ 关闭文件。\x0d\x0a\x0d\x0a七里河团队答疑助人,希望我的回答对你有所帮助欢迎分享,转载请注明来源:内存溢出
评论列表(0条)