优德888官方直营_优德88游戏下载_w88官方网站手机版

admin3周前299浏览量

本文首发于大众号“AntDream”,欢迎微信查找“AntDream”或扫描文章底部二维码重视,和我一同每天前进一点点

文件和目录操作是很常见的功用,这儿做个简略的总结,包含留意事项和实践的完成代码,根本日常开发都够用了

目录操作

判别目录或是文件是否存在

os.path.exists(path)
仿制代码

判别是否是文件或是目录

# 假如文件或是目录不存在也会回来False
os.path.isfile(path)
os.path.isdir(path)
仿制代码

创立/删去目录

os.mkdir(path)
os.rmdir(path)
仿制代码

得到当时的目录称号

os.path.split(dir_path)[1]
仿制代码

这个办法既简略又有用,比方咱们输入一个目录途径:

os.path.split('/usr/projects/project1')[1]
# 输出
project1
# 实践上,上面的代码是分了2步走:
# 第1步:使用os.path.split办法切割途径
os.path.split('/usr/projects/project1')
# 输出
('/usr/projects', 'project1')
# 然后第2步取出第2个成果,也便是当时的目录姓名
仿制代码

循环遍历目录

循环遍历目录有2种办法,一种是惯例的递归办法,相似下面这样:

def list_file(path):
for file in os.listdir(path):
if os.path.isdir(os.path.join(path, file)):
list_file(os.path.join(path, file))
print(file)
仿制代码

还有一种更好的办法便是用os.walk办法,相似下面这样:

def list_file_by_walk(dir_path):
for home, dirs, files in os.walk(dir_path):
print(home)
print(dirs)
# files中是文件列表
for file_name in files:
print(file_name)
仿制代码

os.walk办法的几个参数简略介绍一下:

  • home:这个是当时遍历的目录,比方说是 /usr/projects/
  • dirs:是这个目录(home目录)下面的一切文件夹(也便是子目录)
  • files:是这个目录(home目录)下一切的文件

所以从上面的参数中能够看出,os.walk办法会逐个地遍历初始目录下面的一切目录和文件

常见的文件操作

跟上面得到目录名相似的是得到文件的后缀

os.path.splitext(file_path)
仿制代码

这个办法假如输入的是文件的途径,比方:

a = '/usr/projects/project1/test.txt'
os.path.splitext(a)
# 输出
('/usr/projects/project1/test', '.txt')
# 所以跟上面相似,咱们能够直接拿到文件的后缀
os.path.splitext(a)[1]
仿制代码

文件的全途径

# 需求文件的目录途径和文件名
os.path.join(dir_name, file_name)
仿制代码

这个办法也很有用,由于咱们在翻开一个文件的时分都需求知道文件的途径

比方在上面循环遍历目录的比方中,咱们能够这样翻开修正文件:

def list_file_by_walk(dir_path):
for home, dirs, files in os.walk(dir_path):
print(home)
print(dirs)
# files中是文件列表
for file_name in files:
# 这个file_name仅仅一个文件名
print(file_name)
# 假如咱们需求翻开文件进行修正读写操作,那就需求文件的途径
# 用os.path.join办法就能够快速得到文件途径
file_path = os.path.join(home, file_name)
仿制代码

需求留意的是,不要直接用字符串相加的办法来拼接,这姿态会有兼容问题,比方windows上或许途径便是错的了

读写文件

翻开文件

with open(file, 'r') as f:
for line in f.readlines():
print line
仿制代码

咱们只需记住上面翻开文件的格局就行了,也便是这句:

with open(file_path, 翻开的形式) as f
# 咱们就拿到了文件目标f,能够对文件进行操作了,比方读写等
仿制代码

原因是文件读写是IO操作,需求及时封闭翻开的文件,上述with open() as f的办法会主动帮你封闭文件的,以免自己忘掉关

文件的翻开形式

文件的翻开形式有很多种,比方只读、只写、追加形式等等,详细能够见下图:

形式有这么多,把握常见的几种就能够了,其他的等用到了再去了解。需求留意以下几点:

  • 创立文件,只需求翻开一个文件即可:
# 只需这样一句就创立了一个新文件,也便是翻开今后封闭文件
with open(new_file, 'w') as f:
仿制代码
  • 需求特别留意的是,以w只写形式翻开一个文件后会把原文件的内容铲除!所以假如在遍历文件的时分,你想一起修正文件就不能简略的以w只写形式翻开了。
  • 在遍历文件的时分想一起修正文件怎么办呢?留意这儿说的是修正,比方修正某一行。

修正文件的某一部分

这儿举例在遍历文件的时分想修正文件,比方以上面遍历目录文件的比方:

def list_file_by_walk(dir_path):
for home, dirs, files in os.walk(dir_path):
print(home)
print(dirs)
# files中是文件列表
for file_name in files:
# 这个file_name仅仅一个文件名
print(file_name)
# 假如咱们需求翻开文件进行修正读写操作,那就需求文件的途径
# 用os.path.join办法就能够快速得到文件途径
file_path = os.path.join(home, file_name)

# 这个时分我想修正这个文件的内容,要怎么做呢?
仿制代码

需求留意的是,读写形式需求办理文件指针,比较费事,写读形式,则会把原先的内容都铲除,所以都不合适

一种思路是我先以只读形式翻开,然后遍历文件的内容保存起来,比方:

with open(file, 'r') as f:
for line in f.readlines():
print line
# 这儿就能够把文件的内容一行行保存起来
# 找到需求修正的行,修正今后保存
仿制代码

保存今后再以只读形式翻开文件,写入即可。

另一种思路是我翻开原文件的一起,再翻开另一个临时文件用于写入,比方这样:

with open(file, 'r') as f, open(cache_file_path, 'w') as w:
for line in f.readlines():
# 中心能够对f文件中的内容进行过滤或是修正
w.write(line)
# 完了今后需求删去原文件,然后把临时文件的姓名修正成本来文件的姓名即可
仿制代码

这儿就顺路引出了,删去和重命名文件的办法

os.remove(file)
os.rename(cache_file_path, file)
仿制代码

总结

以上便是Python文件和目录操作的常用知识点和办法总结,主张咱们保藏起来,今后便利随时检查。


 欢迎重视我的大众号检查更多精彩文章!
仿制代码

参考文献:K码农-http://kmanong.top/kmn/qxw/form/home?top_cate=28

最新评论