Python3 文件(os库)常用的场景和用法

 

整理于2020年11月下旬,献给不甘平凡的你
更多python3基础知识请查收于:
https://blog.csdn.net/weixin_45316122/article/details/109843899

 

Trick:纯demo,心在哪里,结果就在那里

 


import os
"""
1.文件的处理
假设在当前的目录下有一个'a.txt'
1)重命名文件
os.rename('abc.txt','a123.txt')
>>'abc.txt'变成了'a123.txt'
2)删除文件
os.remove('a123.txt')
但是在删除之前,最好先判断'a123.txt'是否存在
改成:
if os.path.exists('a123.txt'):
    os.remove('a123.txt')
2.文件路径的处理
假设有一个文件路径
path='/users/Python/Data/info.txt'
1)获得路径
print os.path.dirname(path)
>>/users/Python/Data
2)分割文件名
print os.path.basename(path)
>>info.txt
3)分割文件的后缀
print os.path.split(path)
>>('/users/Python/Data', 'info.txt')
3.创建并访问目录
比如创建一个test01,test02目录
1)创建目录
os.mkdir('test01')#在当前目录下创建一个test01目录
os.mkdir('test02')#在当前目录下创建一个test02目录
改进,最好在创建之间先判断目录是否存在,否则会报错
if not os.path.exists('test01'):
    os.mkdir('test01')
if not os.path.exists('test02'):
    os.mkdir('test02')
2)列出当前目录下的所有文件和文件夹
|---test01--------
|---test02--------
|---demo_file.py--
print os.listdir('.')
>>['demo_file.py', 'test01', 'test02']
有朋友说我不知道这个test01是文件夹还是文件啊,不急有高招,接着看
print list(os.walk('.'))#walk()会生成当前目录下的所有文件和目录
>>[('.', ['test01', 'test02'], ['demo_file.py']), ('.\\test01', [], []), ('.\\test02', [], [])]
3)返回当前的目录
print os.getcwd()
>>C:\Users\xx\Python\Test

4)删除目录
os.rmdir('test02')
>>就把test02文件夹删除了
有同学问若test02里面还有其他文件和目录,怎么办,如何一键删除.可以用一个高级模块shutil来处理,

4.判断是否为文件或者目录
在文件处理的时候,特别是递归处理目录下的多个文件或者嵌套子目录的时候,要先判断一下这个是文件还是目录.
python有非常简单的方法,假设我们有一个这样的目录结构:
|---test01--------
|---test02--------
|---demo_file.py--

1)判断是否为文件
print os.path.isfile('test01')
>>False
print os.path.isfile('demo_file.py')
>>True

2)判断是否为目录
print os.path.isdir('test01')
>>True

3)判断是否为符号link
在linux里面会有一些link的文件
print os.path.islink('link_file')

4)判断文件或者目录是否存在
有的时候我们不在乎这个到底是文件还是路径,我们只关心它是否存在,有个简便的方法:
print os.path.exists('demo_file.py')
>>True
print os.path.exists('test01')
>>True
"""

随笔小技巧
# a = {}.fromkeys(("aa","bb","cc"),100)
# # for k,v in a.items():
# #     print(k,v)
#
#
# #如果有这个数,则打印,没有就填入后面那个数
# # d ={1:'a',2:'b',3:"c"}
# # print(d.get(4,"xx"))
# # print(d.get(3,"xx"))
#
#
# #获取字典的值
# # aInfo={'Wangdachui':3000,'NiuYun':2000,'LinLing':4500,'Tianqi':8000}
# # template='''
# # Welcome to the pay wall.
# # NiuYun' salary is %(NiuYun)s.
# # Wangdachui's salary is %(Wangdachui)s.
# # '''
# # print(template%aInfo )
#
# #希望丢弃掉一些返回值,我们可以用_搞定
# # def g():
# #     return 'class room is 203',1000,'2016-10-06'
# # _,price,_=g()
# # print(price)
#
#
# # 尽量用异常表示特殊情况,不要返回None
# # def divide(a,b):
# #    try:
# #       return True,a/b
# #    except ZeroDivisionError:
# #       return False,None
#
# print (divide(0,10))
import time,datetime

# 警惕默认参数的潜在问题
# def f(message,when = None):
#     when = datetime.datetime.now()
#     print('%s:%s'%(when,message))
#
# f("hi xiaohonghong")
# time.sleep(1)
# f("hi xiaohonghong again")

 

 

你可能感兴趣的:(python基础)