Day 14 : 基础套件的介绍-os套件,帮助你管理资料

这边就来介绍在python中非常重要的档案管理套件,叫做os。它可以用来帮助你管理资料夹中的档案,当然也可以做到一次更动档名或资料的功能,非常的实用,使用前就先import吧,它是内建的所以不需要使用pip来做安装,直接import就好。

import os

再来就来创建一个资料夹吧,我们可以利用os.mkdir这个指令,mkdir是MakeDictionaries的意思,顾名思义就是创建一个资料夹。

import os
os.mkdir('./test')

https://ithelp.ithome.com.tw/upload/images/20210927/20138060NS9JdaTZrp.png
执行後就会发成功创建了一个test资料夹了。你已可以使用os.rmdir(RemoveDictionaries)来删除指定资料夹。

import os
os.rmdir('./test')

https://ithelp.ithome.com.tw/upload/images/20210927/201380600D7x3HGred.png
当然,因为是档案管理套件,当然可以取得档案的资料,就先从取得档名开始讲起,取得路径下档名非常的简单,只要使用os.listdir就好了,例如我在刚刚的test资料夹中放了两个档案,a.txt跟b.txt,然後使用os.listdir:

import os
list = os.listdir('./test')
print(list)

https://ithelp.ithome.com.tw/upload/images/20210927/20138060AOnpGX2Wxl.png
可以发现它就会将test资料夹下的所有档案名称以list(串列)的方式print出来,在很多档案的状况下就可以利用这种方法配合字串搜索来快速找到你想调整的档案并对它进行变更。

在来就来尝试取得档案内的资料吧,在讲这个之前必须先说明一下,开启档案的方式以及os中档案读写的差异性。

开启档案有两种方式,一种是使用os中的os.open,比较不直觉但功能较广,另一种就是使用python的内建功能-open。open比较直觉并且好理解,故我这边会用open来当范例。

open中可以放三个参数,分别是档案路径以及读写方式,还有编码方式。我们先在a.txt里面打入123456并把python程序码改成这样:

import os
f = open( "./test/a.txt", 'r', encoding='utf-8')
print(f.read())

https://ithelp.ithome.com.tw/upload/images/20210927/20138060RA4GCD2tCW.png
输出结果可以看到,print出我们刚刚输入的123456了,这边程序码非常好理解,首先open内的三个参数的第一项就是路径,我们指向了a.txt这个档案,第二个参数则是读写方式,大致可以分为三种:

r : 单纯读取这个档案内的资料,不能做修改。

w : 更改这个档案。

a : 再不引响档案的状况下,在档案最後方追加资料。

第三个参数则是编码方式,通常都会使用utf-8编码。

然後将读取得结果存到f变数中。

再来,我们可以使用read()函式将资料读出来,f.read()就是从f中读出资料的意思。

然後来讲讲w模式吧,它可以盖过原本的资料,做覆写的动作,将刚刚的程序码改成这样:

import os
f = open( "./test/a.txt", 'w', encoding='utf-8')
f.write("abcdef")
f.close()
x = open("./test/a.txt", 'r', encoding='utf-8')
print(x.read())

这边有两点要注意,首先是w权限的使用,它无法使用read函式,所以必须使用r再open一次;第二点是任何档案开完後必须利用close将它关闭,不然可能会有bug的产生。
https://ithelp.ithome.com.tw/upload/images/20210927/20138060YtXFnNJCOe.png
结果你就会看到123456被更改成abcdef了,如果想在後面增加输入的话,我们就需要用到a权限。

import os
f = open( "./test/a.txt", 'a', encoding='utf-8')
f.write("abcdef")
f.close()
x = open("./test/a.txt", 'r', encoding='utf-8')
print(x.read())

https://ithelp.ithome.com.tw/upload/images/20210927/20138060JpD7HHKHgC.png
蛮简单的吧!

明天会继续谈论OS,并且会把自身用os解决问题的例子拿出来分享。


<<:  【第十三天 - Flutter Sqflite+Provider】

>>:  Day18 遇到问题该怎麽办?

Nutrition Helper

实作 按照之前 Rich Menu 的思路,我们可以让使用者在点选不同主选单位置的时候丢出不同的文...

[D02]k8s基本名词认识-01

写在前面 今天加班,所以等等把文章顺过之後再补上,先发文 今天加班,所以等等把文章顺过之後再补上,先...

【Day 29】支援向量机(Support Vector Machine, SVM)(下)

昨天讲完Hinge Loss,今天要继续介绍SVM的第二个特色:Kernel Method。 Dua...

Day20-自制下拉式选单_我就想要美美的

今天来弄一个自制的漂亮下拉式选单 首先下拉式选单,会有上面可以按的地方跟下方会弹出来的悬浮按钮 我这...

[Day 9]人不作死就不会死(前端篇)

挑战目标: MockNative Camp前端 今天要来实作更新会员资料API,我的习惯是将requ...