python模块是什么文件,python文件下载模块
文件的操作是任何编程语言都要涉及的知识。本博客主要关注Windows电脑上的文件操作。毕竟看这个博客的大部分同学都在用Windows电脑。
不用说,没有电脑是学不到编程的。你已经熟悉计算机文件和文件夹,但文件路径可能不清楚。本文首先介绍文件路径。
打开电脑上的任意文件夹,在上图所示位置找到的地址就是文件路径。使用文件路径文件名可以访问计算机上的任何文件。
c:\ users \ administrator \ desktop \ book cover \ ABC . png除了最后一个是文件名,前面一个是文件路径。
例如,对于abc.png文件,其文件路径为C:\ users \ administrator \ desktop \ book cover。文件路径可以称为文件目录或文件所在的文件夹。
绝对路径和相对路径标题这两个概念很有意思,刚学的时候很容易混淆。
首先记住绝对路径。绝对意味着绝对不可改变。
比如上面的文件abc.png的绝对路径是硬盘上不可更改的地址,即C:\ users \ administrator \ desktop \ book cover是其绝对路径。
一般理解为绝对路径是从根目录开始描述的路径。
Path,关键字是相对,相对是相对于当前目录。这个需要结合案例研究,后面补充。
还有两个知识点需要补充。没错,就是一个点,表示当前文件夹;两个点表示上层的文件夹。
Python中如何使用os模块和os.path模块操作文件路径?使用os模块,它是os模块内部的子模块。首先导入这个模块。
Import os获取当前Python文件的目录。
getcwd方法可以获取当前Python文件所在的工作目录,即当前文件在那个文件夹中,并获取绝对地址,如下面的代码。
导入操作系统
Print(os.getcwd())**获取绝对路径os.path.abspath **
os.path模块中的abspath方法可以返回绝对路径。您可以先通过帮助功能查看该方法的用法。
导入操作系统
Help(os.path.abspath)关注学习的结果。学习编程对英语要求不高,但还是要认识一些常用词。
模块ntpath中函数abspath的帮助:
abspath(路径)
返回路径的绝对版本的方法。abspath需要一个参数path,即一个路径,基于该路径返回绝对路径。
例如,此代码返回demo4.py文件的绝对路径。
导入操作系统
ret=os.path.abspath(demo4.py )
Print(ret)**获取相对路径os.path.relpath **
绝对路径从根目录返回路径值,但相对路径不同。由于这个方法叫做relative,所以需要一个relative对象,所以这个方法的语法格式如下:
OS.path.relpath (path,start) path是获取绝对路径的地址值,描述起来比较复杂。后面看代码;start的相对对象值。导入操作系统
ret=os.path.relpath(D:\ )
Print(ret)获取D:\\这个目录的相对地址,相对于谁的地址。不写start参数,相对于当前工作目录,也就是Python文件所在的目录。您已经知道当前的Python文件位于D:/gun/2中。
我们先来推断一下D:\\相对于D:/gun/2怎么得。应该是父目录的父目录。代码是如何表示的?我已经了解了父目录(上层文件夹)的表示.所以我写了它.并且整理了一下逻辑,发现和代码一致。\.将path参数修改为与Python文件目录一致的值,看看是否可以得到相对路径是a .它指示当前目录。
导入操作系统
ret=OS . path . relpath( d:\ \ gun \ \ 2 )
#或者这样写。
# ret=os.path.relpath(d:/gun/2 )
打印(ret)结果输出为。这是预期值。
如果很难学,不要着急,然后往下看,慢慢的你就体会到了。
路径检查方法检查路径的主要目的是检查文件或文件夹是否存在,或者确定路径对应的是文件夹还是文件。
Exists(path)如果路径文件或文件夹存在,则返回True,否则返回False;Isabs(path) path是绝对路径,返回True否则,它返回False;Isdir(path)路径是文件夹返回True,否则你懂;Isfile(path)路径是文件返回True。以上四种方法都在os.path模块下,具体代码比较简单。你自己试试就好了。
操作目录以下方法在os模块中,建议进行以下操作:首先通过os.path.exists判断目录是否存在
Mkdir(path)创建一个目录;Rmdir(path)删除目录;Chdir(path)将当前工作目录切换到path;Remove(路径)删除文件。请注意,如果路径是目录,删除将会出错,并且权限不足。请使用rmdir删除目录。以上四种方法的实际编码也很简单。导入模块后就用完了,所以橡皮擦本身不会先浪费空间。
要获得文件大小,只需要调用getsize方法。
导入操作系统
注意字节大小。
获取指定目录下的所有内容。可以通过os.listdir方法获取指定目录下的所有内容,包括文件和文件夹。
导入操作系统
Print(os.listdir( . )))输出:
[demo1.py , demo2.py , demo3.py , demo4.py , demo5.py , dog _ module.py , _ _ pycache _ _]可以与文件进行比较。
Os.walk方法这个方法不太好理解。第一个滚雪球阶段还是暂时跳过。这个方法可以遍历目录树,通过一个循环可以得到指定目录下的所有文件和文件夹,不过我就不学了(_)。
读取文件Python:Python在读写文件时首先要做的就是打开文件,然后你就可以一次性或者逐行读取文件了。使用打开功能打开文件。
阅读文件的所有内容
使用open函数打开文件后,可以通过read读取文件的内容。这种方法相当于把文件的内容一次性读入程序的一个字符串中,非常强大。
Test.txt文件内容
梦想橡皮擦
是个大人物。
真是个大人物。
我自己也相信。阅读代码如下:
#文件地址,注意事先在当前目录下新建一个test.txt文件。
file=test.txt
#打开文件
f=打开(文件,编码=utf-8 )
#读取文件的全部内容
read_str=f.read()
#关闭文件
f.close()
Print(read_str)首先要注意的是,当你用open打开一个文件时,必须在文件用完之后用close关闭它。
第二点需要注意的是,上面代码中的file=test.txt 并不是一个完整的路径。在这种情况下,这意味着该文件与当前Python文件在同一个目录中。如果是在不同的目录下,就需要用到上面提到的路径相关知识。
例如,在以前的目录中./test.txt
如果上面的代码运行有编码BUG,注意修改下面的打开函数代码,用encoding="UTF-8 "设置文件打开时的编码。
#打开文件
F=open(file,encoding=utf-8 )逐行读取文件的内容
通过循环调用file对象,可以逐行输出文件内容。
#文件名
file=test.txt
#打开文件
f=打开(文件,编码=utf-8 )
#循环逐行读取
对于f中的行:
打印(行)
#关闭文件
f.close()的输出内容如下图所示。
在这里,逐行读取时有一个额外的换行符。原因是在txt文件中,每一行的末尾默认有一个换行符,打印函数的输出也会带来换行符,所以有两个回车。作为解决方案,您可以使用print函数的第二个参数。
#文件名
file=test.txt
#打开文件
f=打开(文件,编码=utf-8 )
#循环逐行读取
对于f中的行:
打印(行,结束= )
#关闭文件
F.close()逐行读取行
使用readlines方法一次性将数据读入列表,如下面的代码所示。
#文件名
file=test.txt
#打开文件
f=打开(文件,编码=utf-8 )
#逐行阅读
data=f.readlines()
#关闭文件
f.close()
在打印(数据)输出中,您可以看到读取字符串的每一行都有一个换行符。
[梦橡皮擦\n ,是大人物\n ,真的是大人物\n ,我自己也相信]有上下文
在Python中,为了防止文件忘记打开后被关闭,提供了一个with关键字来解决这个问题。语法格式如下:
以(要打开的文件)作为文件对象:
在文件的操作码块具有该语法之后,可以将前面的代码修改为:
file=test.txt
#打开文件
用open(file,encoding=utf-8 )作为f:
#读取文件的全部内容
read_str=f.read()
Print(read_str)还有其他几种读取文件的方法,可以自己尝试一下。
写文件到文件一般是指写到本地硬盘。
在学习写文件之前,需要扩展open函数。这个函数已经掌握了两个参数,第一个是要操作的文件,第二个是文件的编码。增加了文件打开模式参数。open函数中这个参数的默认值是R,代码写成open(text.txt ,mode=r )。Encoding=utf-8 )表示以只读方式打开文件。如果要写入文件,需要将mode参数设置为w,mode参数还有其他值。别担心,你以后会学到的。先记住其中两个就好。
书写内容的语法格式是:
文件。编写(要编写的内容)具体的案例代码:
#文件地址,注意事先在当前目录下新建一个test.txt文件。
file=test.txt
#打开文件
用open(file,mode=w ,encoding=utf-8 )作为f:
#写入文件内容
F.write(我就是要写的内容)注意,要写的内容需要是字符串类型,其他类型写会出错。这样写完内容后,原来的内容会被覆盖。如果要将数据追加到文件中,请使用mode=a。
写入多行数据
您可以通过write方法写入单行数据。如果要写入多行数据,可以在with代码块中编写多个写入方法。请注意,默认情况下,write方法不会在行尾添加换行符。如果要添加换行符,需要手动添加。
例如,下面的代码:
file=test.txt
#打开文件
用open(file,mode=w ,encoding=utf-8 )作为f:
#写入文件内容
F.write(我就是要写的内容\n )
F.write(我就是要写的内容)文件复制你可以在这个模块中使用shutil对象的copy方法来复制文件。
Shutil.copy(旧文件,新文件)作为真实代码编写如下:
导入技能
shutil.copy(test.txt , aaa.txt )
Shuttil.copy (test.txt ,./aaa.txt) #复制不同目录下的目录copytree方法的语法格式和copy的一样,只是这个方法是用来复制目录的,如果目录下有子目录或文件要一起复制的话。
导入技能
#第一个参数是旧目录,第二个参数是新目录
当shutil.copytree(./1 , a4 )执行代码,就要确保新目录不存在,如果存在,就报错。
多用途移动方法使用移动方法来移动文件。
Shutil.move(旧文件,新文件)移动文件。确保旧文件存在。移动后,旧文件将被移动到新的文件位置。
move方法可用于修改文件名。在移动文件的过程中,如果新旧文件名不一致,可以实现移动文件并重命名的效果。
您也可以使用move方法来移动目录。移动目录时,目录中的所有文件将一起移动。当然,如果新旧目录名不一致,也可以移动目录,重新命名。
使用rmtree删除有数据的目录可以删除有数据的目录,相当于直接清空目录下的所有目录和文件,然后顺便删除目录。具体内容可以自行测试。
文件扩展知识zipFile模块可以通过这个模块直接压缩和解压文件。这部分知识会在后续的滚雪球中补充。
知道本博客中编码主要涉及编码是open函数中的编码参数。我们将这个参数的值设置为utf-8,这样可以解决很多程序中很多潜在的编码bug。
这部分内容解释起来会占很大篇幅。这里只讲解以下知识。
你应该记得如何写字母UTF-8。你可以使用大写或小写。UTF-8中有一个BOM头,这里就不赘述了。如果UTF-8不能解决编码问题,将它设置为utf-8-sig来尝试解决它。转载请联系作者授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。