os模块和os.path() 模块
os.path() 模块
相对路径和绝对路径
由上面的运行结果可以看出,报错。
因为当前的工作路径为C:\Users\。\Python基础学习。
而这个路径下没有test.txt。(即当前工作目录不是文件所在目录,不能用相对路径)写成绝对路径则不会报错。
如下代码:
若想要写成相对路径,则要切换工作目录。如下:
文件路径的书写格式
.csv就是带格式的.txt文本文件,又叫逗号分隔符文件。.csv可以直接用excel打开,也可以用记事本打开
文件对象 python file文件链接
file 对象使用 open 函数来创建,下面列出了 file 对象常用的函数: 注意:open()函数的用法见(3)
file.close()关闭文件。关闭后文件不能再进行读写操作。file.flush()刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件, 而不是被动的等待输出缓冲区写入。file.fileno()返回一个整型的文件描述符(file descriptor FD 整型), 可以用在如os模块的read方法等一些底层操作上。file.isatty()如果文件连接到一个终端设备返回 True,否则返回 False。file.next()返回文件下一行。file.read([size])从文件读取指定的字节数,如果未给定或为负则读取所有。file.readline([size])读取整行,包括 “\n” 字符。file.readlines([sizeint])读取所有行并返回列表,若给定sizeint>0,则是设置一次读多少字节,这是为了减轻读取压力。file.seek(offset[, whence])设置文件当前位置,用于移动文件读取指针到指定位置。file.tell()返回文件当前位置。file.truncate([size])截取文件,截取的字节通过size指定,默认为当前文件位置。file.write(str)将字符串写入文件,返回的是写入的字符长度。file.writelines(sequence)向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符
打开文件,open语句
Python open() 方法用于打开一个文件,并创建返回文件对象,在对文件进行处理过程都需要使用到这个函数,如果该文件无法被打开,会抛出 OSError。 如:f = open(file, mode=‘r’) f是一个文件对象
注意:使用 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参数类型
注意:用w或a模式打开文件的话,如果文件不存在,那么就自动创建。 此外,用w模式打开一个已经存在的文件时,原有文件的内容会被清空,因为一开始文件的操作的标记是在文件的开头的,这时候进行写操作,无疑会把原有的内容给抹掉。
查看文件的编码方式
encoding设置方法 查看文件的编码方式:以.csv或者.txt为例,先用记事本打开该文件,然后点击另存为,在弹出的另存为对话框中,你就可以看到文件的编码格式
如下图,可以看出IRIS.csv的编码方式为UTF-8
encoding设置: 当文件编码方式为ANSI时,encoding=‘gbk’ 当编码方式为UTF-8时,encoding=‘utf8’
读取文件fileObject.read(),以及f.readline()、f.readlines()
fileObject.read(size=-1); size : 从文件中读取的字符数,如果未给定或为负则读取所有。
注意:读取后,光标会停留在读取末尾,再次运行.read()之后,由于光标位于末尾,再次读取输出为空
f.readline()和f.readlines()
f.readline() 方法用于从文件读取整行,包括 “\n” 字符。一次性读取一行 f.readline(n) #读取该行的前n个字符 f.readlines() 方法用于读取所有行(直到结束符 EOF)并返回列表,该列表可以由 Python 的 for… in … 结构进行处理。也会读取\n。 f.readlines()返回列表,包含所有的行。无参数。
文件内容如下:
file.seek(offset[, whence])
设置文件当前位置
seek() 方法用于移动文件读取指针到指定位置。 fileObject.seek(offset[, whence=0])
参数:offset – 开始的偏移量,也就是代表需要移动偏移的字节数
whence:可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;
0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。
返回值:如果操作成功,则返回新的文件位置,如果操作失败,则函数返回 -1。
文件的写入f.write(str)、f.writelines(seq)
write(str) 方法用于向文件中写入指定字符串。 在文件关闭前或缓冲区刷新前,字符串内容存储在缓冲区中,这时你在文件中是看不到写入的内容的。 语法:参数:str 要写入文件的字符串。返回值:返回的是写入的字符长度。(Returns the number of characters written (which is always equal to the length of the string).)
注意:如果文件打开模式带 b,那写入文件内容时,str (参数)要用 encode 方法转为 bytes 形式,否则报错:TypeError: a bytes-like object is required, not ‘str’。
writelines() 方法用于向文件中写入一序列的字符串。
这一序列字符串可以是由迭代对象产生的,如一个字符串列表。
换行需要制定换行符 \n。
语法如下:fileObject.writelines( [str]) 参数:str – 要写入文件的字符串序列。
返回值:该方法没有返回值。
打开text2.txt。文件内容如下:
关闭文件f.close()
到此这篇关于Python中os模块的使用及文件对象的读写详解的文章就介绍到这了,更多相关Python中os模块内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!