Python教程

Python_14文件操作

本文主要是介绍Python_14文件操作,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

一、文件操作:

Python提供了必要的函数和方法进行默认情况下的文件基础操作。可以用file对象做大部分的文件操作。
open函数,你必须先用Python内置的open函数打开一个文件,创建一个file对象,相关的辅助方法才可以调用它进行读写。
语法:file object = open(file_name[,access_mode][,buffering])
各个参数细节如下:
file_name:包含你要访问的文件名称的字符串值。
access_mode:决定了打开文件的模式:只读、写入,追加等。所有可取值如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。对文件的操作包含r、w、a。
                       1、r:只读方式打开文件。
                       2、rb:以二进制格式打开一个文件用于只读。
                       3、r+:打开一个文件用于读写。
                       4、rb+:以二进制格式打开一个文件用于读写。
                       5、w:写的方式打开文件,表示新建或覆盖文件,也有wb,w+,wb+,与r类似
                       6、a:追加的方式打开文件,表示在文件末尾添加内容,也有ab,a+,ab+。
                       注:r、w方式操作文件时,文件指针指向文件开头,a方式时,指向文件末尾
buffering:如果buffering的值被设为0,就不回有寄存。如果buffering的值取1,访问文件会寄存行。如果将buffering的值设为大于1的整数,表明这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

File对象的属性:
file.closed        :返回true,如果文件已被关闭,否则返回false。
file.mode         :返回被打开文件的访问模式。
file.name         :返回文件的名称。
file.encoding   :返回文件的编码。

 1 #Python文件操作基础2022.08.14
 2 import os
 3 # txtPath = 'E:\\Python_code\\project01\\chapter04_02\\test.txt'   #第一种方法直接写目录
 4 # print(os.getcwd())                 #返回当前模块的目录
 5 
 6 txtPath = os.getcwd()+'\\test.txt'   #如果工作当中项目需要移植代码到其他同事哪里时,那么如果不把这个地址也放到E盘对应目录下项目就会报错,所以使用os.getcwd()方法替换
 7 txtfile = open(txtPath,'r')          #file object = open(file_name,[,access_mode][,buffering])
 8                                      #access_mode:决定打开文件的模式:只读,只写,追加等。非强制的,默认文件访问模式为只读r
 9                                      #buffering的值被设为0,就不会有寄存,取1访问文件会寄存,大于1表示寄存区的缓存大小,取负值,系统缓冲大小则为系统默认
10 
11 
12 print(txtfile.closed)   #返回true如果文件已关闭,否则返回False
13 print(txtfile.mode)     #返回被打开文件的访问模式
14 print(txtfile.name)     #返回文件的名称
15 print(txtfile.encoding) #返回文件编码

 

二、往文件写入数据:

       write()方法可将任何字符串写入一个打开的文件。需要重点注意的是,Python字符串可以是二进制数据,而不仅仅是数字。Write()方法不在字符串结尾不添加换行符('\n'):
       flush()方法刷新内部缓冲,直接把内部缓冲区的数据立刻写入文件
语法:
fileObject.write(string)
fileObject.flush()

文件位置:
      Tell()方法告诉你文件内的当前位置,换句话说,下一次的读写会发生在文件开头这么多字节之后。
       seek(offset,[from])方法改变当前位置。Offset变量表示要移动的字节。From变量指定开始移动字节的参考位置。如果from被设为0,这意味着将文件的开头作为移动字节的参考位置。如果设置为1,则使用当前的位置作为参考位置。如果它被设为2,那么该文件的末尾将作为参考位置。

其他操作文件的方法:
fp.readline([size])    :读一行,如果定义了size,有可能返回的只是一行的一部分
fp.readines([size])  :把文件每一行作为一个list成员,并返回这个list。其实它的内部是通过循环调用readline()来实现的。如果提供size参数,size是表示读取内容的总长,也就是说可能只读到文件的一部分。
fp.writelines(seq)   :把seq的内容全部写到文件中(多行一次性写入)。如果需要换行,则需要自己加入每行的换行符。
fp.next()                 :返回下一行,并将文件操作标记位移到下一行。如果需要换行则要自己加入每行的换行符 python2.7支持

 1 #Python文件操作基础2022.08.14
 2 import os
 3 # txtPath = 'E:\\Python_code\\project01\\chapter04_02\\test.txt'   #第一种方法直接写目录
 4 # print(os.getcwd())                 #返回当前模块的目录
 5 
 6 txtPath = os.getcwd()+'\\test.txt'   #如果工作当中项目需要移植代码到其他同事哪里时,那么如果不把这个地址也放到E盘对应目录下项目就会报错,所以使用os.getcwd()方法替换
 7 txtfile = open(txtPath,'r')          #file object = open(file_name,[,access_mode][,buffering])
 8                                      #access_mode:决定打开文件的模式:只读,只写,追加等。非强制的,默认文件访问模式为只读r
 9                                      #buffering的值被设为0,就不会有寄存,取1访问文件会寄存,大于1表示寄存区的缓存大小,取负值,系统缓冲大小则为系统默认
10 
11 
12 print(txtfile.closed)   #返回true如果文件已关闭,否则返回False
13 print(txtfile.mode)     #返回被打开文件的访问模式
14 print(txtfile.name)     #返回文件的名称
15 print(txtfile.encoding) #返回文件编码
 1 # 第四章文件读操作
 2 import os
 3 filePath = os.getcwd()+'\\test.txt'
 4 txtFile = open(filePath,'r')
 5 # content = txtFile.read()     #读取所有内容
 6 # print(content)
 7 
 8 # content = txtFile.read(3)     #读取部分内容,传入count就只读count个字符串
 9 # print(content)
10 
11 
12 # content = txtFile.readline()   #读取一行 参数 size
13 # print(content)
14 
15 
16 lines = txtFile.readlines()   #读取多行,返回列表 参数size 返回保护size的行
17 print(lines)
 1 #第四章文件写入操作2022.08.14
 2 import os
 3 filePath = os.getcwd()+'\\write.txt'
 4 txtFile = open(filePath,'w')     #w写的方式打开文件,表示新建或覆盖文件
 5 
 6 
 7 # txtFile.write('ssss')
 8 # txtFile.flush()
 9 
10 lista = ['hello\n','world\n','ni\n','hao\n']
11 txtFile.writelines(lista)   #把seq序列的内容全部写文件中(多行一次性写入)。如果需要换行则需要自己加入每行的换行符。
12 txtFile.flush()     #刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件
13 txtFile.close()     #关闭文件
1 #第四章文件写入操作2022.08.14
2 import os
3 filePath = os.getcwd()+'\\write.txt'
4 txtFile = open(filePath,'a')         #a追加的方式打开文件,r、w操作文件时,文件指针指向文件开头,a方式时,指向末尾
5 txtFile.write('123456')
6 txtFile.flush()     #刷新文件内部缓冲,直接把内部缓冲区的数据立刻写入文件
7 txtFile.close()     #关闭文件

 

三、目录操作:

mikdir()方法:可以使用os模块的mikdir()方法,在当前目录下创建新的目录
语法:os.mikdir("newdir")

chdir()方法:可以用chdir()方法来改变当前的目录
语法:os.mikdir("newdir")

rmdir()方法:删除目录,目录名称以参数传递。在删除这个目录之前,它的所有内容应该先被清除。
语法:os.rmdir("dirname")

makedirs()方法:创建多级目录
语法:os.makedirs("c:\python\test")

getcwd()方法:得到当前工作目录
语法:os.getcwd()

isdir()/isfile()方法:检验给出的路径是否是一个目录/文件
语法:os.path.isdir("E:\\book\\temp")

 1 #第四章文件位置操作
 2 import os
 3 filePath = os.getcwd()+'\\write.txt'
 4 txtFile = open(filePath,'rb')         #需要以二进制的方式rb去读,才能使用seek(3,1),seek(3,2)当前指针和末尾指针位置偏移
 5 
 6 # s1 = txtFile.read(3)
 7 # print(txtFile.tell())
 8 # s2 = txtFile.read(4)
 9 # print(txtFile.tell())             #tell()查看文件指针位置
10 # print(s1)
11 # print(s2)
12 
13 s1 = txtFile.read(3)
14 txtFile.seek(-3,2)     #改变了文件指针的当前位置,seek(offset,from),offset表示移动的字节数,from设为0,以文件开头作为移动字节参考位置,1是当前,2是结尾
15 s2 = txtFile.read(3)
16 print(s1)
17 print(s2)
 1 #第四章文件删除、重命名、目录操作2022.08.14周日PM
 2 import os
 3 import shutil
 4 
 5 # os.rename('a.txt','b.txt')        #将a.txt改成b.txt
 6 # os.rename('.\\b.txt','.\\a.txt')  #相对路径写法,也可绝对路径
 7 # os.remove('.\\a.txt')             #移除文件a.txt
 8 # os.mkdir('test1')                 #使用os模块的mkdir()方法在当前目录下创建新的目录
 9 # os.chdir('test1')                 #可以用chdir()方法来改变当前的目录
10 # print(os.getcwd())                #os.getcwd()得到当前工作目录
11 # os.mkdir('test2')
12 # os.chdir('test1')
13 # os.rmdir('test2')                 #删除目录,目录名称以参数传递。在删除这个目录之前,它的所以内容应该先被清除。
14 
15 # os.chdir('test1')
16 # os.mkdir('test2')
17 
18 # os.rmdir('test1')
19 # os.makedirs('.\\a\\b\\c')         #创建多级目录
20 # shutil.rmtree('.\\a')             #删除多级目录,需要import shutil
21 
22 boolean = os.path.isdir('test1')     #检验给出路径是否是一个目录
23 print(boolean)
24 b = os.path.isfile('Demo01.py')      #检验给出的路径是否是一个文件
25 print(b)
这篇关于Python_14文件操作的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!