当前位置: 首页 > 后端技术 > Python

Python:文件操作,with语句,目录操作

时间:2023-03-26 12:55:17 Python

编码格式Python解释器使用的编码格式是Unicode(内存)。py文件使用UTF-8(外部存储)存储在磁盘上UTF-8是Unicode的实现。不同的编码格式占用不同的空间。文件读写原理文件的读写就是俗称的“IO操作”(input-output)文件读写操作流程图TDA[Python操作文件]-->B(open/newfile)B-->C(读/写文件)C-->D[关闭资源]文件读操作内置函数open()创建文件对象语法规则:file=open(filename[,mode,encoding])file:创建的文件对象open:创建文件对象的函数filename:要创建/打开的文件名mode:打开文件的方式,默认为只读encoding:编码格式;默认文本文件中字符的编码格式为gbk为GBK创建一个demo.py文件,编写代码并运行file=open('test.txt','r')#r表示只读print(file.readlines())#['明月几时\n','问酒青天'];returnlistfile.close()常见文件类型根据文件中数据的组织方式,文件分为两类:文本文件:存放普通的“字符”文本,默认为Unicode字符集,记事本可以用于打开二进制文件:数据内容以“字节”存储,不能用记事本打开,必须使用专用软件,如:mp3音频文件、jpg图片、doc文档等。常用文件打开方式打开方式说明r只读模式;文件指针放在文件的开头w只写模式;如果文件不存在则创建该文件;如果文件存在则覆盖原来的内容;文件指针放在文件开头的追加方式;文件不存在则创建,文件指针放在文件开头;如果文件存在,则在文件末尾追加内容,文件指针放在原文件末尾。单独使用,需要配合其他模式使用,a+代码示例(复制图片文件):src_img=open('lbx.png','rb')target_img=open('lbx_copy.png','wb')target_img。write(src_img.read())target_img.close()src_img.close()文件对象方法说明的常用方法read([size])从文件中读取size字节或字符并返回。如果省略size,读到文件末尾,返回整个文件内容alist返回write(str)将字符串str的内容写入文件writelines(str_list)将字符串列表str_list的内容写入文件,不加换行符seek(offset[,whence])将文件指针移动到anewposition,offset表示相对于whence的位置;offset为正向结束方向移动,为负向起始方向移动。whence的不同值有不同的含义:0:从文件头开始计数(默认值)1:从当前位置开始计数2:从文件尾开始计数tell()返回文件指针的当前位置flush()将缓冲区的内容写入文件,但不关闭文件。close()将缓冲区的内容写入文件,然后关闭文件,并释放与文件对象相关的资源。关闭以达到释放资源的目的。省去了手动关闭的过程。发生异常时也可以自动关闭资源。当一个类可以实现(进入和退出)功能时,就说这个类符合(上下文管理)协议,调用这个类的实例对象(上下文管理器)withopen('test.txt','r')asfile:print(file.readlines())#['明月几时\n','问天酒']目录操作os模块是Python内置的操作系统相关模块函数和文件系统。该模块的语句执行结果通常与操作系统有关,在不同的操作系统上运行得到的结果可能不同。os模块和os.path模块用于对文件和目录进行操作。importosos.system('calc.exe')#调用系统程序os.startfile('D:\ProgramFiles(x86)\Tencent\WeChat\WeChat.exe')#调用可执行文件os模块的相关函数对目录进行操作函数说明getcwd()返回当前工作目录listdir(path)返回指定路径下的文件和目录信息mkdir(path[,mode])创建目录makedirs(path1/path2...[,mode])创建多级目录rmdir(path)deletedirectoryremovedirs(path1/path2...)deletemulti-leveldirectorychdir(path)setpathtothecurrentworkingdirectoryos.path模块操作目录功能说明abspath(path)获取文件或目录的绝对值splitext()分离文件名和扩展名basename(path)从路径中提取文件名dirname(path)从路径中提取文件路径,不包括文件名isdir(path)用于判断路径是否为路径关于Python知识中的路径:我们常用/表示相对路径,\表示绝对路径,例如:/data/bbb.txt表示相对路径;D:\user\ccc.txt表示绝对路径一般下面用/。我们经常会看到./path或../path形式的路径。其中之一。代表当前文件夹的绝对路径;..代表当前文件夹的上层文件。文件夹的绝对路径。示例:打印出当前目录下的所有Python文件importospath=os.getcwd()lst=os.listdir(path)forfileNameinlst:iffileName.endswith('.py'):print(fileName)指定目录下的所有文件importospath=os.getcwd()lst=os.walk(path)fordirpath,dirname,filenameinlst:print(dirname,dirpath,filename)print('--------------')#遍历所有文件夹fordirItemindirname:print(os.path.join(dirpath,dirItem))#遍历所有文件forfileinfilename:print(os.path.join(dirpath,file))print('------------')运行结果:['sub1']D:\study\python-study\chap11['file_read_demo.py','lbx.png','lbx_copy.png','test.txt','__init__.py']------------D:\study\python-study\chap11\sub1D:\study\python-study\chap11\file_read_demo.pyD:\study\python-study\chap11\lbx.pngD:\study\python-study\chap11\lbx_copy.pngD:\study\python-study\chap11\test.txtD:\study\python-study\chap11\__init__.py------------[]D:\study\python-study\chap11\sub1['__init__.py']--------------D:\study\python-study\chap11\sub1\__init__.py--------------