Python文件操作

我会把常用的文件所有操作全部讲一遍并且附上代码,里面所使用的全部为相对路径。

1、创建打开文件

file=open('文件.txt','a+')    #a+的意思和c语言没区别

2、以二进制打开文件

file=open('图片1.png','rb')    #以只读二进制方式打开图片文件
print(file)     #通过输出我们可以得出创建的是一个BufferedReader对象,该对象生成后可以再应用其他第三方模块处理

3、打开文件指定编码方式

file=open('文件.txt',encoding='utf-8')
open打开默认使用GBK编码,如果被打开文件不是这个编码就会抛出异常

可以直接先更改文件的编码,或者像我们这样指定编码

4、关闭文件

file=open('文件.txt','a+')
file.close()    

5、打开文件

with open('文件.txt','w')as file:     
    pass

把文件打开后产生的结果保存到file变量中;with的好处是在处理文件的时候无论是否抛出异常,都能保证with语句执行完毕后关闭已经打开的文件 。

6、写入文件内容

file=open('文件.txt','a+')
file.write('66666666666666')        #使用write的前提是在打开文件的时候模式为可以写入的,a,w,a+都行
file.close()

7、读取文件

with open('文件.txt','r') as file:
    string=file.read(9)     #调用read函数读取前面9个字符,read函数是从文件开始的时候开始读取的
    print(string)
file.close()

8、seek方法

with open('文件.txt','r') as file:
    file.seek(8)            #移动8位文件指针,相当于已经到了9
    string=file.read(10)    #从9的位置开始读取
    print(string)
file.close()

9、实例

with open('古诗.txt','a+',encoding='utf-8') as file:  #追加模式打开,以utf-8模式写入
    s=input('古诗=')         #手动输入数据
    file.write(s)           #写入文件
    file.seek(0)            #重置文件指针的位置,因为当写入完文件后,文件的指针依旧偏移到了数据的末尾
    string=file.read()      #读取文件全部的数据
    print(string)           #打印
file.close()                #关闭文件对象

#值得一提的是read()方法只能从文件开始的位置读取,也只能使用r或者r+,一定要使用a+就需要先重置文件指针位置

10、按照一行读取

with open('古诗.txt','r',encoding='utf-8') as file:       #打开模式必须是r或者r+
    s=file.readline()
    print(s)
file.close()

11、读取全部行

#读取全部行的作用同调用read()放大时不指定size类似,只不过读取全部行的时候,返回的是一个字符串列表
#每个元素为文件的一行内容。读取全部行,使用的是文件对象的readiness()方法
with open('古诗.txt','r',encoding='utf-8') as file:
    string=file.readlines()        #读取全部行,放入字符串列表
    print(string)
    file.seek(0)                  #记得需要重置文件指针
    string=file.read()            #用read()读取全部内容
    print(string)
file.close()

12、目录操作

import os
print(os.name)#nt表示Windows操作系统
print(os.linesep)

13、路径

import os
print(os.getcwd())  #输出当前目录

#1、相对路径
with open('文件.txt') as file:                #通过相对路径打开文件
    pass

#2、绝对路径
print(os.path.abspath('文件.txt'))            #获取绝对路径

#3、拼接路径
print(os.path.join('D:\文件','文件.txt'))      #拼接字符串,将多个路径拼接在一起
#如果在使用拼接的时候有多个绝对路径,那么以从左到右为准,最后一次出现的路径为准进行拼接,其他参数会被忽略,如下
print(os.path.join("C:\\Users\\AMD",'D:自用',"c&&c++"))   #D:自用\c&&c++

14、判断目录是否存在

import os
print(os.path.exists('D:\111'))   #False
print(os.path.exists('D:\自用'))    #True
#真假表示是否存在

15、创建一级目录

import os
os.mkdir('D:\\demo')    #创建D:\demo目录,也就是在D盘创建一个文件夹
#如果路径已经存在就会抛出异常

16、判断文件目录是否存在再创建目录

import os
path='D:\\demo'                 #指定要创建的目录
if not os.path.exists(path):    #判断目录是否存在   exists方法是当路径存在就为假,不存在就为真,所以使用if not
    os.mkdir(path)              #创建目录
else:
    print('该目录已经存在!')

17、创建多级目录

import os
#使用makdedirs()函数
os.makedirs('D:\Test\Python\Test.txt')#创建D盘Test文件夹内Python文件夹内Test.txt,也就是创建了三个文件夹,txt只是这个文件夹的名字,目录无法创建具体文件

18、删除目录

import os
os.rmdir('D:\Test\Python\Test.txt')#我们删除上个文件创建的.txt

19、删除非空目录

import shutil
shutil.rmtree('D:\Test')#删除Test级一下全部的目录和内容

20、获取文件的基本信息

import os
fileinfo=os.stat('图片1.png')                         #获取文件的基本信息

print('文件路径:',os.path.abspath('图片1.png'))
print('索引号:',fileinfo.st_ino)
print('设备号',fileinfo.st_dev)
print('文件大小',fileinfo.st_size)
print('最后一次访问时间',fileinfo.st_atime)
print('最后一次修改时间',fileinfo.st_mtime)
print('最后一次状态变化时间',fileinfo.st_ctime)
#结果都是时间戳,要转换

21、遍历目录

import os
tuples=os.walk("D:\自用\c&&c++\code数据结构与算法分析")
for tuplel in tuples:
    print(tuplel,'\n')

22、删除文件

"""
import os
os.remove('古诗.txt')
"""

#最好像下面这样
import os.path

path='古诗.txt'
if os.path.exists(path):
    os.remove(path)
else:
    print('文件不存在')

23、重命名文件和目录

import os
src="D:\自用\新建 文本文档.txt"         #原始目录
dst="D:\自用\测试.txt"                 #更改文件名后的目录
if os.path.exists(src):
    os.rename(src,dst)
    print('文件重命名完毕')
else :
    print('文件不存在')

#----------------重命名目录-----------------
#目录重命名和文件没区别,只要把文件路径换成目录即可
src="666"         #原始目录
dst="Test"                 #更改文件名后的目录
if os.path.exists(src):
    os.rename(src,dst)
    print('目录重命名完毕')
else :
    print('目录不存在')

24、获取文件信息,更改版本

import os
def formatTime(longtime):
    import time
    return time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(longtime))  #格式化时间
def formatByte(number):
    for(scale,label)in [(1024*1024*1024,'GB'),(1024*1024,'MB'),(1024,'KB')]:#处理内存
        if number>=scale:
            return '%.2f %s'%(number*1.0/scale,label)
        elif number==1:
            return '1 字节'
        else:
            byte='%.2f'%(number or 0)
    return (byte[:-3]if byte.endswith('.00')else byte)+'字节'

if __name__=='__main__':
    fileinfo=os.stat('图片1.png')
    print('文件路径:', os.path.abspath('图片1.png'))
    #输出基本信息
    print('索引号:', fileinfo.st_ino)
    print('设备号', fileinfo.st_dev)
    print('文件大小', formatByte(fileinfo.st_size))
    print('最后一次访问时间', formatTime(fileinfo.st_atime))
    print('最后一次修改时间', formatTime(fileinfo.st_mtime))
    print('最后一次状态变化时间', formatTime(fileinfo.st_ctime))

25、根据当前时间创建文件夹

import os
import time

def nsfile(s):
    b = os.path.exists("D:\\testFile\\")
    if b:
        print("该目录存在!")
    else:
        os.mkdir("D:\\testFile\\")              # 生成文件
    for i in range(1, s + 1):
        # 获取当前系统时间
        localTime = time.strftime("%Y%m%d%H%M%S", time.localtime())
        # 以当前系统时间作为文件名称
        filename = "D:\\testFile\\" + localTime + ".txt"        # a:以追加模式打开(必要时可以创建)append;b:表示二进制
        f = open(filename, 'ab')
        testnote = '文件测试'                  # 文件内写入的信息
        f.write(testnote.encode('utf-8'))    # 写入文件信息,以utf-8的编码写入
        f.close()
        print("file" + " " + str(i) + ":" + str(localTime) + ".txt")#打印出来创建的文件的名字
        time.sleep(1)     # 休眠一秒
    print('生成文件成功!')

if __name__ == '__main__':
    s = int(input("请输入需要生成的文件数:"))    # 获取输入的文件个数
    nsfile(s)

最后补充一下文件访问模式

python共三大主访问模式r、w、a
模式    描述
r    以只读⽅式打开⽂件。⽂件的指针将会放在⽂件的开头。这是默认模式。


rb    以⼆进制格式打开⼀个⽂件⽤于只读。⽂件指针将会放在⽂件的开头。这是默认模式。


r+    打开⼀个⽂件⽤于读写。⽂件指针将会放在⽂件的开头。


rb+    以⼆进制格式打开⼀个⽂件⽤于读写。⽂件指针将会放在⽂件的开头。


w    打开⼀个⽂件只⽤于写⼊。如果该⽂件已存在则打开⽂件,并从开头开始编辑,即原有内容会被删除。如果该⽂件不存在,创建新⽂件。


wb    以⼆进制格式打开⼀个⽂件只⽤于写⼊。如果该⽂件已存在则打开⽂件,并从开头开始编辑,即原有内容会被删除。如果该⽂件不存在,创建新⽂件。


w+    打开⼀个⽂件⽤于读写。如果该⽂件已存在则打开⽂件,并从开头开始编辑,即原有内容会被删除。如果该⽂件不存在,创建新⽂件。


wb+    以⼆进制格式打开⼀个⽂件⽤于读写。如果该⽂件已存在则打开⽂件,并从开头开始编辑,即原有内容会被删除。如果该⽂件不存在,创建新⽂件。


a    打开⼀个⽂件⽤于追加。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。也就是说,新的内容将会被写⼊到已有内容之后。如果该⽂件不存在,创建新⽂件进⾏写⼊。


ab    以⼆进制格式打开⼀个⽂件⽤于追加。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。也就是说,新的内容将会被写⼊到已有内容之后。如果该⽂件不存在,创建新⽂件进⾏写⼊。


a+    打开⼀个⽂件⽤于读写。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。⽂件打开时会是追加模式。如果该⽂件不存在,创建新⽂件⽤于读写。


ab+    以⼆进制格式打开⼀个⽂件⽤于追加。如果该⽂件已存在,⽂件指针将会放在⽂件的结尾。如果该⽂件不存在,创建新⽂件⽤于读写。

 不要指望自己一次性全部记住,因为我也不怎么记得,虽然基本都是我写的。

文件全部放到GitHub仓库-2022-5-4-/python/file at main · 13870517674/-2022-5-4- · GitHub

你可能感兴趣的:(Python,python)