IO编程-----读写文件

读写文件是最常见的IO操作。Python内置了读写文件的函数,用法和C是兼容的。

读写文件前,我们先必须了解一下,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序直接操作磁盘,所以,读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后,通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件)。

open(filemode=‘r‘buffering=-1encoding=Noneerrors=Nonenewline=Noneclosefd=Trueopener=None)

mode是一个可选字符串,用于指定打开文件的模式。它默认‘r‘打开文本模式下的阅读方式。其他常见的值是‘w‘写(截断文件,如果它已经存在),‘x‘独占创建和‘a‘附加(在一些 Unix系统上,这意味着所有的写入追加到文件的末尾,无论当前的寻找位置)。在文本模式下,如果 编码未指定使用的编码是与平台相关的: locale.getpreferredencoding(False)被称为获取当前的本地编码。(用于读取和写入原始字节使用二进制模式,并保留 编码未指定。)可用的模式是:

Character Meaning
‘r‘ open for reading (default)  打开文件阅读
‘w‘ open for writing, truncating the file first  打开并写入文件
‘x‘ open for exclusive creation, failing if the file already exists 创建文件,如果
‘a‘ open for writing, appending to the end of the file if it exists
‘b‘ binary mode 
‘t‘ text mode (default)
‘+‘ open a disk file for updating (reading and writing)
‘U‘ universal newlines mode (deprecated)
#读取文件
f=open(‘/home/wangxy/PycharmProjects/hello.txt‘, ‘r‘) #open(文件路径,r表示读)
print(f.read())#成功open后,读取内容
f.close()  #文件使用完毕必须关闭,因为文件对象会占用系统资源

#由于文件读写时都有可能产生IOError,一旦出错,后面的f.close()就不会调用。所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用with语句
#with语句会自动调用close
with open(‘/home/wangxy/PycharmProjects/hello.txt‘, ‘r‘) as f:
    print(f.read())

with open(‘/home/wangxy/文档/test.py‘,‘r‘) as f:
    #调用read()会一次性读取文件的全部内容,如果文件有10G,内存就爆了,所以,要保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。
    #print(f.read(512))
    #是否可读
    print(‘readable is: %s‘%f.readable())
    #readline(x) 读一行,x表示读几个字节的内容
    print(f.readline())
    print(f.readline())
    #readlines() 一次性读取所有内容并按行返回list
    print(f.readlines())

#读取二进制文件,比如图片视频,需要标识符为rb
with open(‘/home/wangxy/图片/1.png‘,‘rb‘) as f:
    print(f.read())

#遇到有些编码不规范的文件,你可能会遇到UnicodeDecodeError,因为在文本文件中可能夹杂了一些非法编码的字符。遇到这种情况,open()函数还接收一个errors参数,表示如果遇到编码错误后如何处理。最简单的方式是直接忽略:
with open(‘/home/wangxy/文档/Command方法分析.py‘,‘r‘,encoding=‘gbk‘,errors=‘ignore‘) as f:
    print(f.read())

#练习:请将本地一个文本文件读为一个str并打印出来:
fpath=r‘/home/wangxy/文档/test.py‘

with open(fpath,‘r‘) as f:
    print(f.read())
#写入文件

with open(‘/home/wangxy/PycharmProjects/hello.txt‘,‘a‘) as f:
    f.write(‘This is write line2!\n‘)

#创建文件
with open(‘/home/wangxy/PycharmProjects/testwangxy.txt‘,‘x‘) as f:
    f.write(‘test create a file!‘)
时间: 2024-10-10 22:01:29

IO编程-----读写文件的相关文章

Python3 IO编程之文件读写

读写文件是最常见的IO操作.python内置了读写文件的函数,用法和C是兼容的. 读写文件前,我们先必须了解一个,在磁盘上读写文件的功能都是由操作系统提供的,现代操作系统不允许普通的程序终结操作磁盘,所以读写文件就是请求操作系统打开一个文件对象(通常称为文件描述符),然后通过操作系统提供的接口从这个文件对象中读取数据(读文件),或者把数据写入这个文件对象(写文件). 读文件 要以读文件的模式打开一个文件对象,使用python内置的open()函数,传入文件名和标示符: >>> f=ope

第五篇:使用无缓冲IO函数读写文件

前言 本文介绍使用无缓冲IO函数进行文件读写. 所谓的无缓冲是指该IO函数通过调用系统调用实现,其实系统调用内部的读写实现也是使用了缓冲技术的. 读写步骤 1. 打开文件 open 函数 2. 读写文件 read write 函数 3. 修改文件指针 lseek 函数 ( 可能和 2 交替进行 ) 4. 关闭文件 close 函数 代码示例 1 // 2 // 本程序往一个文件中写入一个整型数组 3 // 然后读取这个数组并输出 4 // 5 6 #include <unistd.h> 7 #

Java IO如何读写文件

Java把这些不同来源和目标的数据都统一抽象为数据流:Java语言的输入输出功能是十分强大而灵活的:在Java类库中,IO部分的内容是很庞大的,因为它涉及的领域很广泛:标准输入输出,文件的操作,网络上的数据流,字符串流,对象流,zip文件流. 这里介绍几种读写文件的方式: 一.InputStream.OutputStream(字节流) //读取文件(字节流) InputStream in = new FileInputStream("d:\\1.txt"); //写入相应的文件 Out

IO流 读写文件

读写文件 如前所述,一个流被定义为一个数据序列.输入流用于从源读取数据,输出流用于向目标写数据. 下图是一个描述输入流和输出流的类层次图. 下面将要讨论的两个重要的流是 FileInputStream 和 FileOutputStream: FileInputStream 该流用于从文件读取数据,它的对象可以用关键字 new 来创建. 有多种构造方法可用来创建对象. 可以使用字符串类型的文件名来创建一个输入流对象来读取文件: InputStream f = new FileInputStream

Java IO流读写文件的几个注意点

平时写IO相关代码机会挺少的,但却都知道使用BufferedXXXX来读写效率高,没想到里面还有这么多陷阱,这两天突然被其中一个陷阱折腾一下:读一个文件,然后写到另外一个文件,前后两个文件居然不一样? 解决这个问题之后,总结了几个注意点. 注意点一:Reader/Writer读写二进制文件是有问题的 : public void copyFile1() { File srcFile = new File("E://atest//atest.txt"); File dstFile = ne

191108、Java IO流读写文件的几个注意点

平时写IO相关代码机会挺少的,但却都知道使用BufferedXXXX来读写效率高,没想到里面还有这么多陷阱,这两天突然被其中一个陷阱折腾一下:读一个文件,然后写到另外一个文件,前后两个文件居然不一样? 解决这个问题之后,总结了几个注意点. 注意点一:Reader/Writer读写二进制文件是有问题的 : 上面代码使用BufferedReader一行一行地读取一个文件,然后使用BufferedWriter把读取到的数据写到另外一个文件中.如果文件是ASCCII形式的,则内容还是能够正确读取的.但如

Python IO编程——操作文件和目录

1.1   操作文件和目录 >>> import os >>> os.name     #操作系统类型 'posix' >>> os.uname()     #详细的系统信息 posix.uname_result(sysname='Linux',nodename='daidai.com', release='2.6.18-194.el5', version='#1 SMP Tue Mar 1621:52:39 EDT 2010', machine='x

Python之IO编程——文件读写、StringIO/BytesIO、操作文件和目录、序列化

IO编程 IO在计算机中指Input/Output,也就是输入和输出.由于程序和运行时数据是在内存中驻留,由CPU这个超快的计算核心来执行,涉及到数据交换的地方,通常是磁盘.网络等,就需要IO接口.从磁盘读取文件到内存,就只有Input操作,反过来,把数据写到磁盘文件里,就只是一个Output操作. 由于CPU和内存的速度远远高于外设的速度,所以,在IO编程中,就存在速度严重不匹配的问题.举个例子来说,比如要把100M的数据写入磁盘,CPU输出100M的数据只需要0.01秒,可是磁盘要接收这10

IO编程、操作文件或目录、序列化、JSON

IO中指Input/Output,即输入和输出:涉及到数据交换的地方,通常是磁盘.网络等,就需要IO接口 1.由于CPU和内存的速度远远高于外设的速度,所以,在IO编程中,存在速度严重不匹配问题.eg:把100M的数据写入磁盘,CPU输出100M的数据只需要0.01秒,可是磁盘接收100M数据可能需要10秒,怎么办呢,有两种办法: ①.CPU等着,也就是程序暂停执行后续代码,等100M数据在10s后写入磁盘,再接着往下执行,这种模式称为同步IO ②.CPU不等待,只是告诉磁盘,"慢慢写,不着急,