python之文件操作
1、Python文件操作:
Python提供了必要的函数和方法进行默认情况下的文件基本操作。可以用file对象做大部分的文件操作。
1.1:open函数
你必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的辅助方法才可以调用它进行读写。
f=open('./test.txt','r')
1.2:语法:
file object = open(file_name [, access_mode][, buffering])
各个参数的细节如下:
file_name:file_name变量是一个包含了你要访问的文件名称的字符串值。也就是文件路径
access_mode:access_mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。
buffering:如果buffering的值被设为0,就不会有寄存。如果buffering的值取1,访问文件时会寄存行。如
果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小
则为系统默认。
1.3:access_mode属性值介绍:
对文件的操作包含 r (读) w(写) a(追加)
r 只读方式打开文件。
rb 以二进制格式打开一个文件用于只读。
r+ 打开一个文件用于读写。
rb+ 以二进制格式打开一个文件用于读写。
w 写的方式打开文件,表示新建或者覆盖文件,也有 wb w+ wb+ 与r类似
a 追加的方式打开文件,表示在文件内容末尾添加内容,也有 ab a+ ab+
注:r、w方式操作文件时,文件指针指向文件开头,a方式时,指向文件末尾
1.4:File对象的属性:
file.close() 刷新缓冲区里任何还没写入的信息,并关闭该文件,这之后便不能再进行写入
file.closed 返回true表示如果文件已被关闭,否则返回false。
file.mode 返回被打开文件的访问模式。
file.name 返回文件的名称。
file.encoding 返回文件编码。
2、读取文件内容
fp.readline([size]) #读一行,如果定义了size,有可能返回的只是一行的一部分
fp.readlines([size]) #把文件每一行作为一个list的一个成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分
2.1:print(f.read()) #读取文件所有的内容
2.2:print(f.read(10)) #读取文件前10个字
2.3:print(f.readline()) 默认读取第一行的数据
2.4:print(f.readline(20)) 读取第一行的数据 如果第一行数据大于20个 则显示前20个数据
2.5:print(f.readlines()) 以列表的方式读取所有的数据 ==》['hello\n', 'hello2020']
3、往文件写入数据
write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不仅仅是文字。Write()方法不在字符串的结尾不添加换行符('\n'):write() argument must be str
flush()方法刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件
fp.writelines(seq) #把seq的内容全部写到文件中(多行一次性写入)。如果需要换行则要自己加入每行的换行符。writelines()可以通过列表和元祖传入
nowtime = datetime.datetime.today()
print(nowtime)
strs=(str(nowtime),'dddd','ddgge')
f.writelines(strs)
next(fp) #返回下一行,并将文件操作标记位移到下一行。如果需要换行则要自己加入每行的换行符
举例:
f1=open('./test.txt','w',encoding='utf-8')
str='今天是个好日子啊11111'
f1.write(str)
f1.writelines(str)
f1.flush()


4、文件位置:
Tell()方法告诉你文件指针的当前位置,换句话说,下一次的读写会发生在文件开头这么多字节之
后。print(f1.tell())
seek(offset [,from])方法改变当前文件指针的位置。Offset变量表示要移动的字节数。From变量指定开始移动字节的参考位置。如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。 f1.seek(2,0)
5、重命名和删除文件:
Python的os模块提供了帮你执行文件处理操作的方法,比如重命名和删除文件。要使用这个模块,你必须先导入它,然后可以调用相关的各种功能。
5.1:rename()方法:重命名 rename()方法需要两个参数,当前的文件名和新文件名。
语法:
os.rename(current_file_name, new_file_name)
5.2:remove()方法:
你可以用remove()方法删除文件,需要提供要删除的文件名作为参数。 os.remove('./test2020112701/tt01.txt') 注意这个文件的状态是关闭的 不然会报错
语法:
os.remove(file_name)
5.3:目录操作:
mkdir()方法:可以使用os模块的mkdir()方法在当前目录下创建新的目录 可以先通过os.path.isdir('./test2020112701')判断有没有这个目录
语法:os.mkdir("newdir")
chdir()方法:可以用chdir()方法来改变当前的目录。
语法:os.chdir("newdir")
rmdir()方法:删除目录,目录名称以参数传递。在删除这个目录之前,它的所有内容应该先被清除。 通过os.remove('./test2020112701/tt01.txt')清除
语法:os.rmdir('dirname')
makedirs()方法:创建多级目录:
语法:os.makedirs(“c:\python\test”)
getcwd()方法:得到当前工作目录
语法: os.getcwd()
isdir()/isfile()方法:检验给出的路径是否是一个目录/文件
os.path.isdir('E:\book\temp')
import shutil
shutil.rmtree('./test2020112701') 可以删除非空目录
os常用命令:
1:print(os.path.abspath(file)) # 求当前文件所在的目录 ==>D:\PycharmProjects\untitled20201117\test.py
2:print(os.path.dirname(file)) # 求当前文件所在的目录 ==>D:/PycharmProjects/untitled20201117
3:print(os.path.dirname(os.path.dirname(file))) #求当前文件所在目录的上一级目录
4:获取当前文件的文件名 print(os.path.basename(file)) =》test.py
5:print(os.path.join(path1,path2))将两个路径拼接
浙公网安备 33010602011771号