发布日期:2024-09-14 17:11 点击次数:163
本章先容python自带模块os抖音风 裸舞,os为操作系统 operating system 的简写,意为python与电脑的交互。主要学习的函数有 os.getcwd()、os.chdir()、os.path.basename()、os.path.join()、os.path.exists()、os.path.isdir()、os.path.isfile()、os.listdir()、os.walk()、os.scandir()、os.stat()、os.mkdir()、os.makedirs()、os.rename()、os.remove()以及获取桌面旅途。目次连气儿有点不准,不够我调屡次也调不好,无法手动生成 王人是自动生成的,拼集一下。话未几说,参加正题。
目次
1. 满盈旅途、相对旅途
2. 满盈旅途的三种抒发形式
3. os.getcwd()
4. os.chdir()
5. os.path.basename()
6. os.path.join()
7. os.path.exists()
8. os.path.isdir() 、 os.path.isfile()
9. os.listdir()
10. os.walk()
11. os.scandir()
12. os.stat()
13. os.mkdir()
14. os.makedirs()
15. os.rename()
(1)重定名
(2)挪动
(3)重定名并挪动
16. os.remove()
17. 获取桌面的旅途
收尾
1. 满盈旅途、相对旅途主张:满盈旅途为一个完满的旅途。相对旅途为基于刻下默许旅途下的旅途,省去了刻下旅途的部分。
例子:假如 刻下默许旅途为 D:\临时\python磨练\pandas。pandas文献夹下里还有 /merge/first/test.txt 文献夹及文献。那么test.txt文献的旅途:
满盈旅途D:\临时\python磨练\pandas\merge\first\test.txt相对旅途\merge\first\test.txt传授两个快捷时代获取文献的旅途:①在文献夹上方旅途处复制旅途。②按住shift 右击文献,此时会出现 “复制文献地址” 的选项,点击即可。关于文献,无疑是秩序②后来居上。
2. 满盈旅途的三种抒发形式(1)用单斜杠 / 来分隔文献夹。这是旅途是最佳抒发形式。
如:'D: / 临时 / python磨练 / pandas'
(2)用双反斜杠 \\ 来分隔文献夹。按照上述的②秩序获取的旅途王人所以单反斜杠 \ 来分隔的,如若手动把 \ 改为 / ,使命量有点大,此时不错聘用再加一个反斜杠变为双反斜杠,反斜杠在python中示意的真义是转义符,把具有特殊含义的后者转为不含任何真义的字符(用replace是不行的,因为\在python里发达为转义符,会报错,不信不错试试哈)
如:'D: \\ 临时 \\ python磨练 \\ pandas'
(3)在旅途前加上字母 r ,真义为 raw原始的。字母 r 加在字符串前能确保该字符串全是字符串边幅,如 \n也只是 \n,不再翻译为回车换行;\也只是\,不再翻译为转义符。把文献旅途复制粘贴后径直在前边加个 r 就行,该秩序是最苟简的,大推。
如:r'D: \ 临时 \ python磨练 \ pandas'
3. os.getcwd() 获取刻下文献场所的旅途。import osprint(os.getcwd())
图片
图1 os.getcwd()默许景象下,os.getcwd()输出的是刻下正在裁剪的 ipynb或 py文献场所的旅途。
4. os.chdir(path) 改变刻下旅途,改变后,默许旅途为改变后的旅途。os.chdir(r'D:\临时\python磨练\pandas')print(os.getcwd())
图片
图2 改变默许旅途 os.chdir改变旅途可不是只是输出为path那么大约抖音风 裸舞,它关于文献的读取和写入相等苟简。
5. os.path.basename(p) 获取旅途中的终末一个文献夹名字。print(os.path.basename(r'D:\临时\python磨练\pandas'))
图片
图3 os.path.basename顾惜,若传入的旅途为文献,如 r'D:\临时\python磨练\pandas\test.txt',复返的范围是文献名 test.txt。
6. os.path.join(path, *paths) 拼接旅途。p1 = r'D:\临时\python磨练\pandas'p2 = r'merge\test.txt'print(os.path.join(p1,p2))
图片
图4 os.path.join 7. os.path.exists(path) 判断旅途 path是否存在。print(os.path.exists(r'D:\临时\python磨练\pandas'))print(os.path.exists(r'D:\临时\python磨练\pandas\3D图.csv'))
图片
8. os.path.isdir(path, /) 、 os.path.isfile(path) 前者判断path是否为文献夹,后者判断path是否为文献。r1 = r'D:\临时\python磨练\pandas'r2 = r'D:\临时\python磨练\pandas\merge\test.txt'print(os.path.isdir(r1))print(os.path.isfile(r2))
图片
图5 判断是否文献夹或文献 9. os.listdir(path=None)输出path旅途下悉数文献及文献夹,复返范围为一个列表。(不遍历基层)
图片
图6 我的指定旅途下的文献print(os.listdir(r'D:\临时\python磨练\pandas'))
图片
图7 os.listdir当传入指定 path时,输出该旅途下的文献及文献夹,如图6,图中蓝色的为文献夹。
当不传入 path时,有两种情况:①若莫得建立 os.chdir(path)去指定默许旅途,则输出刻下代码文献场所目次下的文献及文献夹。②若建立了 os.chdir(path1),则输出该path1旅途下的文献及文献夹。
“ 不遍历嵌套文献夹 ” 真义是:即使merge文献夹下还有文献,那么这个文献也不会得到输出,即仅遍历刻下层。(如若想要输出嵌套文献夹下的悉数文献,可见底下第9点 os.walk(path) )
爱色堂 10. os.walk(top, topdown=True, οnerrοr=None, followlinks=False) 轮回遍历top旅途下的悉数文献,该旅途基层的文献及文献夹。top:旅途,顶层旅途
topdown:不错瓦解为加速速率,无谓管,默许为True
onerror:当有作假时,不错用界说的函数去输出作假
followlinks:默许为False,真义不大
该函数必须传入旅途,复返3个变量值。第一个为文献夹满盈旅途,第二个为子文献夹的列表,第三个为根目次下悉数文献的列表。先看第一个 (i):
for (i,j,k) in os.walk(r'D:\临时\python磨练\pandas'): print(i)
图片
图8 os.walk输出 ii 得到的是该旅途下悉数文献夹的满盈旅途(看图6,该旅途下有个merge文献夹)。再看 j :
for (i,j,k) in os.walk(r'D:\临时\python磨练\pandas'): print(j)
图片
图9 os.walk输出 jj 得到的是对应 i 旅途下含有的文献夹,每个 i 的旅途输出一个列表。['merge']的由来是因为 D:\临时\python磨练\pandas下有个merge文献;[]的由来是因为 D:\临时\python磨练\pandas\merge下莫得文献夹了。再看 k:
for (i,j,k) in os.walk(r'D:\临时\python磨练\pandas'): print(k)
图片
图9 os.walk输出 kk 得到的是对应 i 旅途下含有的文献,每个 i 的旅途输出一个列表。这里输出的两个列表的由来,和 j 相通,就不逐一阐发了。
由此,经常轮回遍历某旅途下悉数文献以及旅途的秩序是把 i 和 k 集结:
for (i,j,k) in os.walk(r'D:\临时\python磨练\pandas'): for l in k: print(i+'/'+ l)
图片
图10 轮回遍历文献夹下的全部文献此时,位于基层merge文献下的 test.txt 也打印了出来,这是与 os.listdir()即图7的分袂。
11. os.scandir(path=None) 加速迭代速率,把需要迭代的本体放在一个迭代对象里,而不是像os.listdir()相通把范围存在列表中(放在列表占用遍及内存)图片
图11 os.scandir可见复返的是一个可迭代对象,作用是减少内存占用,加速驱动速率。除此除外,它还不错看望文献的各式属性。如获取文献/文献夹名,文献/文献夹满盈旅途,是否为文献夹,是否为文献,以及属性。
for i in os.scandir(r'D:\临时\python磨练\pandas'): print(i) print(i.name) print(i.path) print(i.is_dir()) print(i.is_file()) print('-'*70)
图片
图12笔据属性,还不错索取文献的大小(单元为kb,文献夹大小为0kb)、最近看望时期、最近修改时期、window系统下的创建时期、linux系统下的创建时期等。这里以文献大小 .st_size为例
文献大小.st_size最近看望时期.st_atime最近修改时期.st_mtimewindow系统下的创建时期.st_ctimelinux系统下的创建时期.st_birthtimefor i in os.scandir(r'D:\临时\python磨练\pandas'): print(i.name,i.stat().st_size,'kb')
图片
图13 输出文献大小的属性 12. os.stat(path, *, dir_fd=None, follow_symlinks=True) 获取文献的属性。能获取的属性与上头相通,不再访佛。a = os.stat(r'D:\临时\python磨练\pandas\3D图.csv')print(a)print(a.st_size,'kb')
图片
图14 os.stat 13. os.mkdir(path, mode=511, *, dir_fd=None) 创建旅途(文献夹),若该旅途已存在,则报错。(只可创建一层)path:旅途
mode:看望权限,默许为511,即悉数东谈主王人可看望。在window系统下,mode参数会被忽略。
(1)当旅途已存在:(现在已存在的旅途:D:\临时\python磨练\pandas\merge )
图片
图15 旅途已存在 则报错(2)创建两层文献夹:
os.mkdir(r'D:\临时\python磨练\pandas\merge\concat\join')
图片
图16 创建两层文献夹 报错用os.mkdir()去创建两层文献夹(merge → concat)是不允许的,每次只可创建一层。
(3)创建一层文献夹:
图片
图17 创建一层 生效驱动而莫得报错 14. os.makedirs(name, mode=511, exist_ok=False) 创建旅途(文献夹),能一次创建多层。在驱动该代码前,首先要删掉第13中创建的文献夹,回到领先的景象,苟简不雅察范围(即 D:\临时\python磨练\pandas\merge 目次下莫得文献夹)
os.makedirs(r'D:\临时\python磨练\pandas\merge\concat\join')print('生效')
图片
图18 os.makedirsos.mkdir 一次只可创建一层,而 os.makedirs 一次能创建多层,则即是它们之间的分袂。
15. os.rename(src, dst, *, src_dir_fd=None, dst_dir_fd=None) 重定名/挪动文献或文献夹。src:原文献旅途
dst:重定名/挪动后的文献旅途
首先在 D:/临时/python磨练/pandas 目次下手动创建3个word文献用于现实:重定名before.docx、挪动before.docx、重定名并挪动before.docx
(1)重定名把文献 '重定名before.docx' 重定名为 '重定名after.docx'。
os.rename(r'D:/临时/python磨练/pandas/重定名before.docx',r'D:\临时\python磨练\pandas\重定名after.docx')
图片
(2)挪动把文献 '挪动before.docx' 由 'D:/临时/python磨练/pandas' 挪动到 'D:\临时' ,不改变定名。
os.rename(r'D:\临时\python磨练\pandas\挪动before.docx',r'D:\临时\挪动before.docx')
图片
(3)重定名并挪动把文献 '重定名并挪动before.docx' 由 'D:/临时/python磨练/pandas' 挪动到 'D:\临时' ,同期定名改为 '重定名并挪动after.docx ' 。
os.rename(r'D:\临时\python磨练\pandas\重定名并挪动before.docx',r'D:\临时\变变变.docx')
图片
总的来说,重定名把名字改了就行;挪动把旅途改了就行;挪动并重定名则同期改旅途和名字。
如若后旅途不存在,会报错 “找不到旅途” 。
需要顾惜的是,更名字的时候防御不要把文献的后缀弄没了,如若确凿不防御弄没了后缀,不错点击文献夹的左上角 “查抄”,把 “文献拓展名” 勾上,然后手动加上后缀名。要防御幸免此类问题。下图为不防御把 .docx后缀弄没了的文献,该文献由于莫得后缀,系统不可识别该文献是什么类型。
图片
图19 没了后缀的文献 16. os.remove(path, *, dir_fd=None) 删除文献。防御该操作,不进回收站,删除后是很难找总结的,忽视不要用紧要的文献去现实。图片
图20 删除文献os.remove 17. 获取桌面的旅途给全国传授一个不常见但相等有效的东西:获取桌面的旅途。
os.path.expanduser('~') 获取电脑用户名及旅途
获取到用户名的旅途后,用os.path.join()拼接即可获取桌面旅途。
user = os.path.expanduser('~')desktop = os.path.join(user,'Desktop')print(user)print(desktop)
图片
有什么用途呢,幻想一下你写了一个秩序把驱动出来的范围保存在excel里,想要把这个excel文献保存在对方桌面(为什么保存到桌面,因为松开化去驱动秩序,让莫得学过编程的一又友看着桌面自动生成了一个excel文献,他们的酷爱赶紧就来了,那种仰望的观点,谁懂!!)的时候,就需要获取电脑的桌面旅途了,这种秩序的过失是在电脑改变了桌面旅途后便不适用。固然,这只是一个小例子,其他用处还有好多,待诸位小伙伴发掘,然后共享出来。
收尾os 模块操作最多的是旅途和文献夹,波及到对文献的文献未几。
如若想要用python模块去批处置文献,关于重定名,挪动等,os仍是不错作念到的。然则更高等的功能,比如文献的复制,剪切,以及使用通配符*去查找稳妥条目的文献就相比艰巨了,经常要使用到其他库,如shutil, glob,fnmatch 等库,如若小伙伴对这方面感酷爱,不错提前进行了解。
可能后续我也会更新shutil, glob,fnmatch 等库,然则一篇著述的输出、排版、想考如何才能讲得明晰昭彰王人需要遍实时期。把我学到的常识用我方的瓦解、我方的想维写出来,有输入有输出,同期能锤真金不怕火我方的写稿、组织、大约明了化和其他才气抖音风 裸舞,现在我可能讲的不够层次,然则我也在和全国沿途卓越,沿途加油。
本站仅提供存储管事,悉数本体均由用户发布,如发现存害或侵权本体,请点击举报。
Powered by 哥要色 @2013-2022 RSS地图 HTML地图
Copyright Powered by365站群 © 2013-2024