python操作文件系统(python编写文件管理系统)

发布时间:2022-11-16

本文目录一览:

  1. Python文件操作,看这篇就足够!
  2. 如何用python删除一个文件
  3. python 学习,需要有哪些基础呢?
  4. Python 文件操作
  5. python操作文本文件

Python文件操作,看这篇就足够!

文件的存储方式 在计算机中,文件是以二进制的方式保存在磁盘上的文本文件和二进制文件 文本文件可以使用文本编辑软件查看本质上还是二进制文件 二进制文件保存的内容不是给人直接阅读的,而是提供给其她软件使用的二进制文件不能使用文件编辑软件查看 文件基本操作 在计算机中要操作文件一共包含三个步骤:1.打开文件2.读、写文件 读 将文件内容读入内容写 将内存内容写入文件 模式描述 t文本模式 (默认)。 x写模式,新建一个文件,如果该文件已存在则会报错。 b二进制模式。 +打开一个文件进行更新(可读可写)。 U通用换行模式(不推荐)。 r以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 rb以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。一般用于非文本文件如图片等。 r+打开一个文件用于读写。文件指针将会放在文件的开头。 rb+以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。一般用于非文本文件如图片等。 w打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 wb以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 w+打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。 wb+以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。一般用于非文本文件如图片等。 a打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 ab以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 a+打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 ab+以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 文件打开模式有很多,但是我们实际用到的就只有六种。 我们总结一下主要用到的是下面六种

模式 可做操作 若文件不存在 是否覆盖文件原来内容
r 只读 报错 ——
r+ 可读、可写 报错
w 只写 创建
w+ 可读、可写 创建
a 只写 创建 否,追加写
a+ 可读、可写 创建 否,追加写

只读模式打开文件——只读(r)

文件若不存在报错:

读写模式打开文件——读写模式(r+)

数据写入之前: 数据写入之后: 会替换掉相同长度的内容 文件若不存在报错:

写模式打开文件——写模式(w)

数据写入之前: 数据写入之后: 这种操作会删除原来的文件内容,重新写入Python, 并且把光标放在文件最开始。 若文件不存在,系统会创建该文件夹并重新写入内容

读写模式打开文件——读写模式(w+)

数据写入之前: 数据写入之后: 这种操作会删除原来的文件内容,重新写入Python, 并且把光标放在文件最开始。 若文件不存在,系统会创建该文件夹并重新写入内容 利用这个原理所以文件写模式(w)、读写模式(w+)还可以用作删除文件内容。 因为他们整个工作原理就是把文件原来的内容删除,然后写入新的内容。 如果我们写入的内容为空,那么不就是删除文件内容。 数据写入之前: 数据写入之后:

写模式打开文件(追加内容)——写模式(a)

数据写入之前: 数据写入之后: 可以看到是在原先内容的基础上在文末追加新的内容! 若文件不存在,系统会创建新的文件夹并写入内容

读写模式打开文件(追加内容)——读写模式(a)

数据写入之前: 数据写入之后: 可以看到是在原先内容的基础上在文末追加新的内容! 若文件不存在,系统会创建新的文件夹并写入内容

二进制模式打开文件

我们看到了在文件打开模式中有以下模式:rb、wb……有这种带 b 的。 什么意思呢? 就是用二进制的方式打开文件。 很明显,我们出现了以下错误: 主要原因是因为编码的问题,可能是因为0x82这个字节在gbk编码中没有这个字符, 可能原字符是两个字节,在gbk里被解析成了一个字节,导致字符不存在。 这就是我们文件打开方式需要使用二进制读取的原因。 文件操作 open 函数负责打开文件,并且返回文件对象 read /write / close 三个方法都需要通过文件对象 来调用 文件和文件夹的操作 在Python中⽂件和⽂件夹的操作要借助os模块⾥⾯的相关功能, 具体步骤如下: 导⼊os模块 使⽤ os 模块相关功能

  1. 文件重命名
  2. 删除文件
  3. 创建文件夹
  4. 删除文件夹
  5. 获取当前目录
  6. 改变默认目录
  7. 获取目录列表

如何用python删除一个文件

使用Python删除文件有多种方法,但是最好的方法如下:

  • os.remove()删除文件
  • os.unlink()删除文件
  • shutil.rmtree()删除目录及其下面所有内容
  • pathlib.Path.unlink()在Python3.4及更高版本中用来删除单个文件pathlib模块。

os.remove()删除文件

Python中的OS模块提供了与操作系统进行交互的功能。OS属于Python的标准实用程序模块。该模块提供了使用依赖于操作系统的功能的便捷式方法。 python中的os.remove()方法用于删除文件路径。此方法无法删除目录。如果指定的路径是目录,则该方法将引发OSError。 注意:可以使用os.rmdir()删除目录。

使用os.unlink()删除Python文件

os.unlink()是os.remove()的别名。在Unix OS中,删除也称为unlink。 注意:所有功能和语法与os.unlink()和os.remove()相同。它们都用于删除Python文件路径。两者都是Python标准库的os模块中执行删除功能的方法。 它有两个名称,别名:os.unlink()和os.remove()。 为同一个函数提供两个别名的可能原因是,该模块的维护者认为,许多程序员可能会从C的底层编辑转向Python,其中库函数和底层系统调用称为unlink(),而其他人则可能会使用rm命令或shell脚本来简化语言。

使用shutil.rmtree()删除Python文件

shutil.rmtree():删除指定的目录,所有子目录和所有文件。此功能特别危险,因为它无需检查即可删除所有内容。结果,您可以使用此功能轻松丢失数据。 rmtree()是shutil模块下的一种方法,该方法以递归方式删除目录及其内容。

使用pathlib.Path.unlink()删除文件

pathlib模块在Python3.4及更高版本中可用。如果要在Python2中使用此模块,可以使用pip进行安装。pathlib提供了一个面向对象的界面,用于处理不同操作系统的文件系统路径。 要使用pathlib模块删除文件,请创建一个指向该文件的Path对象,然后对该对象调用unlink()方法。

python 学习,需要有哪些基础呢?

  1. 有较强的逻辑思维能力 几乎所有编程语言的学习都离不开较强的逻辑思维能力,因为编程语言是人与计算机的对话,任何歧义和差错都会影响最终的运行效率。
  2. 有较强的数理专业背景 学习Python最理想的专业有数学、统计学、物理学、计算机科学等专业,因为Python语言所操作的对象很可能是大数据收集与分析,以及AI开发领域,有以上的学科背景会对今后的发展有很好的优势。
  3. 有丰富的运维经验 可能很多学计算机的同学在毕业之后从事了服务器、后台管理的运维工作,这既有优势、也有劣势。所谓优势就是有现成的成品摆在你面前,你在做运维的过程中会对产品开发理解更加充分,然而劣势就在于对自身的技术提高帮助可能比较有限。这时学Python,更在于从运维转开发,这也是对自己职业生涯的一种新规划。
  4. 从事Web全栈开发工作 以前开发web,Java是主角,但如今越来越多的web开发开始青睐于Python,究其原因其实也是因为网络数据量的日益庞大以及人工智能的普及,所以精通Python语言对于从事web全栈开发将有积极的影响。

Python 文件操作

open(filename[,mode,encoding="编码"]) :第一个参数文件名如果不加路径,默认在该py文件目录下(路径举例: E:/XXX或E:\xxx ),第二个是模式,默认为 'r' ——只读,举例: f = open('E:/abc.txt') ,如果要转编码并写入模式: f = open('E:/abc.txt','w',encoding='utf-8')

  1. 模式
  2. 方法 (1) close() : 关闭文件,因为文件写入时是写在内存,只有关闭时才写入硬盘,所以写完记得关闭 (2) read(size = -1) :读取文件size个字符,不写默认是-1,此时读取所有内容(换行按\n来表示,很不好看),并作为字符串返回,一定要注意 读完以后文件指针将会指向末尾 ,所以下一次在用read方法时会发现读取不出内容了,所以这个就要用seek移动指针或者关闭文件重新定义 (3) tell() :返回当前文件指针指向的位置 (4) seek(offset,from) :移动文件指针,代表从from参数开始偏移offset个字节,0代表起始位置,1代表当前位置,2代表文件末尾 (5) readline() :按序列读取一行内容,默认\n为边界 (6) write() :写入内容,但必须要有写入权限才行,否则报错,写完会返回写入的长度,例如: len1 = f.write('abc') ,此时len1就为3 (7) truncate() :删除内容,把当前指针以后的内容全删了,举例: 注:
  3. 文件还可以转化为 list 之类的,例如: list1 = list(f) ,此时文件内容的按\n被隔开,然后可以用for语句读取文件所有内容,举例:
  4. 上面输出文件内容方法相对低效,所以一般都直接用for输出整个文件,举例: 通过 fileno 函数,我们可以查看一个文件对应的文件描述符,对应的是程序中打开的文件序号,举例: 可以看出python在启动时会先启动标准流的文件(文件描述符分别为:0/1/2),所以之后打开的文件就从3开始递增,当释放一个文件资源时,该描述符序号被释放,之后打开的文件可以继续使用该序号的文件描述符 python中的 print 的本质是通过 sys.stdout 来进行内容输出,而 sys.stdout 的本质是一个"文件",相当于我们所有的输入输出的本质都是在对 sys.stdin / sys.stdout / sys.stderr 这些文件来进行读写操作,举例: open 函数不仅可以打开本地文件,也可以打开文件描述符,而该参数默认为 True ,代表 close 后会将对应的文件资源释放,而对于一些文件描述符,我们只是希望 close 时将打开文件描述符的对象释放,而不释放对应的文件资源,那么则可以设置 closefd=False ,举例: 需要使用到 chardet 模块,按二进制可读打开文件,然后通过 detect() 方法查看,举例: 所以就可以根据文件来设置编码了: 有时候使用文件的编码解码也可能会出现无法解析的情况,例如两种编码混在同一个文件里的时候,此时可以设置 errors 参数为 ignore 来避免该问题,示例: 可用 os 模块下的 chmod() 函数,具体参考: 使用 os 模块下的 remove() 函数可以实现删除文件,举例: 可以使用自带的 zipfile 模块来进行操作,举例: 可以使用自带的 tarfile 模块来进行操作,举例:

python操作文本文件

在磁盘上读写文件之前,必须先打开这个文件。打开文件就需要提供文件的路径。 在与Python程序同一个目录下,我们有一个名为 pi.txt 的文件,它的内容如下: 现在使用Python来打开和关闭它: 执行此程序不会有任何输出,这表示着打开和关闭文件都得到了正确执行。 可以看到,使用 open() 函数打开文件,参数为文件名(或文件路径);该函数会返回一个文件句柄,文件句柄并不会实际保存文件的内容,而是代表着一种操作,在上面的例子中,文件句柄被赋值给变量 fhand 。 打开文件后,程序具有读(默认)该文件的权限。 最后,使用文件句柄的 close() 方法关闭文件。这非常重要,因为使用完而没有关闭的文件会占用内存或造成安全问题。 如果Python找不到该文件,则会返回错误,比如下面这样: Python提示我们没有相应的文件或者目录: 'pii.txt'。 打开文件后就可以对文件进行操作: fhand.read() 方法将文件内容作为一个字符串返回。 文件中的每一行末尾使用换行符 \n 表示换行,例子中方法 rstrip() 去掉文本中的换行符,然后输出。 程序的运行效果如下: 如果在文件关闭之前程序发生BUG意外退出,则文件不会关闭,为了避免此类事件的发生,可以使用 with 语句: with 语句的特点是即便在操作文件时发生错误,文件也会自动被清理。 fhand.read() 虽然可以读取文本内容,但是当我们想要逐行处理文件内容,或者文件很大而无法一次性加载进内存的时候,就不适用了。 可以使用 for 语句逐行处理文件内容: 本程序中将文件名保存在变量 filename 中。 打开文件后,使用 for 语句按行读取文件内容。例子中,每次循环依次取一行文本以字符串的格式保存在变量 line 中,每次循环中变量 count 自增1。 这个程序的作用是,打开程序所在目录的 when_old.txt 文件,然后统计行数,并输出结果。 when_old.txt 文件的内容是: 可以使用其他方法操作字符串 line : 程序将以 'And' 开头的行打印出来。 打开文件后,默认的权限是读(r),如果要写文件,则需要使用写(w)或者追加(a)权限。 w权限,打开一个文件用于写入。如果该文件存在,则覆盖该文件;如果该文件不存在,则创建该文件。 a权限,打开一个文件用于追加。如果该文件存在,在文件末尾追加;如果该文件不存在,则创建该文件。 下面是一个使用w权限打开文件的例子: 例子中使用w权限打开该文件,并写入两行。(如果该文件存在,则内容会被覆盖) fhand.write() 不会自动添加换行符,所以如果需要换行,需在末尾添加 \n 。 下面我们写一个统计文件中词频的程序。 它会统计文件中各个词的出现的次数,然后由高到低显示出前5个词。 首先我们完成打开和关闭文件的程序内容: 在例子中,由用户输入文件名,并且使用异常捕获以处理文件打开时的错误。 下面对内容进行统计: 这个程序: 如此,我们就在字典中存放了 单词:次数 的键值对。 由于字典不能保存顺序,所以不能对其进行排序。为此,将每个键值对都添加到一个列表中: 在列表 word_list 中,每一项都是一个元组,每个元组第一个值是单词出现的次数,第二个值是单词内容。 对其进行逆向(由大到小)排序: 打印最终结果: 整个程序如下: 下面是程序运行结果的示例: