python 中OS操作


#获取系统名称
In [235]: os.name
Out[235]: 'nt' #win系统的名称nt

#获取当前文件的绝对路径
In [236]: os.getcwd()
Out[236]: 'D:\\djangoPro\\sample\\1'

'''
绝对路径:从具体的盘符开始到指定文件结束
相对路径:
参照物的----当前的文件
路径盘符
.----当前文件所在的目录
..--当前文件所在的上一级目录
'''
#获取系统环境变量
In [237]: os.environ
Out[237]: environ({'PROMPT': '$P$G', 'PUBLIC': 'C:\\Users\\Public', 'PYCHARM COMMUNITY EDITION': 'K:\\Program Files\\1\\JetBrains\\P
\ProgramData\\Anaconda3\\Li


#获取指定字段的环境变量

 

#在a下创建一个文件夹,叫test
In [239]: os.mkdir(r'..\test')


#在指定路径下创建文件夹,如文件夹已存在报错
In [240]: try:
...: os.mkdir(r'..\test')
...: except Exception as e:
...: print(e)
...:

[WinError 183] 当文件已存在时,无法创建该文件。: '..\\test'

#创建多级目录
In [241]: os.makedirs(r'..\a\b')

#删除目录
In [242]: os.rmdir(r'..\a\b')
In [243]: os.rmdir(r'..\a')

#获取指定目录下的直接子文件名


#删除文件
In [244]: os.remove(r'..\test\啦啦')

#对文件重命名
In [245]: os.rename(r'..\test\啦啦',r'..\test\lala')

#获取指定文件绝对路径
In [246]: os.path.abspath(r"..")
Out[246]: 'D:\\djangoPro\\sample'

#获取文件的扩展名 ---结果时一个元祖
#如果给定的是一个文件路径 元祖的第二个至就是文件的扩展名
In [247]: os.path.abspath(r".")
Out[247]: 'D:\\djangoPro\\sample\\1'

In [248]: pach=r"..\test\lala"

In [249]: file_ext=os.path.splitext(pach)

In [250]: file_ext
Out[250]: ('..\\test\\lala', '')

In [251]: pach1=r"..\test\1.txt"

#如果给的是文件夹 元祖中第二个值就是一个空字符串

In [252]: file_ext=os.path.splitext(pach)

In [253]: file_ext
Out[253]: ('..\\test\\lala', '')

In [254]: file_ext=os.path.splitext(pach1)

#获取文件的扩展名 ---结果时一个元祖
#如果给定的是一个文件路径 元祖的第二个至就是文件的扩展
In [255]: file_ext
Out[255]: ('..\\test\\1', '.txt')

 


In [256]: pach=r"..\test"

In [257]: file_ext=os.path.splitext(pach)

In [258]: file_ext
Out[258]: ('..\\test', '')


#获取文件名 ---文件传递的时候使用的比较多
In [259]: pach=r"..\test\lala"

In [260]: file_ext=os.path.basename(pach)

In [261]: file_ext
Out[261]: 'lala'


#获取指定文件所在的文件夹
In [262]: file_dir=os.path.dirname(pach)

In [263]: file_dir
Out[263]: '..\\test'


In [264]: file_dir=os.path.getsize(pach)

In [265]: file_dir
Out[265]: 0

In [266]: f=open('lala','w')

In [267]: f.write('hello world i love you ')
Out[267]: 23

In [268]: file_dir=os.path.getsize(pach)

In [269]: file_dir
Out[269]: 0

In [270]: file_dir=os.path.getsize('lala')

In [271]: file_dir
Out[271]: 0

In [273]: f=open(r"..\test\lala",'w')

In [274]: f.write('hello world i love you')
Out[274]: 22

In [275]: f.close()

#获取文件下的字节数
In [276]: file_dir=os.path.getsize(pach)

In [277]: file_dir
Out[277]: 22

 

#判断文件是否存在
In [278]: os.path.exists(pach)#文件是否存在True
Out[278]: True

#判断决定的路径是否是一个文件
In [279]: os.path.isabs(pach)
Out[279]: False

In [280]: pach
Out[280]: '..\\test\\lala'


#拼接路径
#获取指定文件夹下的自文件名
In [281]: super_path=r"..\test"

In [282]: sub_file_names=os.listdir(super_path)

In [283]: sub_file_names
Out[283]: ['lala']

In [284]: for sub_file_name in sub_file_names:
...: join_path=os.path.join(sub_file_name,super_path)
...: print(join_path)
...:
lala\..\test

In [285]:

'''

path=r'D:\\djangoPro\\sample\c13'
import os
#使用递归,获取目录下的直接子文件
def get_file(path):
#判断path对应的文件是否存在
if os.path.exists(path):
if os.path.isdir(path):
sub_file=os.listdir(path)
#遍历列表
for file_name in sub_file:
#拼接文件路径
join_path=os.path.join(path,file_name)
#判断这个路径对应文件是否是txt
if os.path.isfile(join_path):
print('1',join_path)
elif os.path.isfile(join_path):
get_file(join_path)
else:
print('我们要操作的文件夹')
else:
print("该路径对应的文件不存在")
get_file(path)

'''
'''
1 D:\\djangoPro\\sample\c13\asyncio_http.py
1 D:\\djangoPro\\sample\c13\asyncio_lock.py
1 D:\\djangoPro\\sample\c13\asyncio_scrapy.py
1 D:\\djangoPro\\sample\c13\asyncio协程原理与性质.py
1 D:\\djangoPro\\sample\c13\asyncio原理.py
1 D:\\djangoPro\\sample\c13\call_test.py
1 D:\\djangoPro\\sample\c13\coroutine_nest.py
1 D:\\djangoPro\\sample\c13\loop_test.py
1 D:\\djangoPro\\sample\c13\pyquery_test.py
1 D:\\djangoPro\\sample\c13\thread_asycio.py
1 D:\\djangoPro\\sample\c13\协程嵌套.py

'''
import os
# 获取后缀为txt文件
pach = r'D:\\djangoPro\\sample\test'
path=r'D:\\djangoPro\\sample\test'
print('1',path)
def get_file(path):
#判断path对应的文件是否存在
if os.path.exists(path):
if os.path.isdir(path):
sub_file =os.listdir(pach)
print('2',sub_file)
#遍历列表
for file_name in sub_file:
#拼接文件路径
join_path =os.path.join(path,file_name)
#判断这个路径对应文件是否是txt
if os.path.splitext(join_path)[-1] == ".txt":
print(join_path)
elif os.path.isfile(join_path):
get_file(join_path)
else:
print('我们要操作的文件夹')
else:
print("该路径对应的文件不存在")

get_file(path)

'''
1 D:\\djangoPro\\sample\test
2 ['1.txt', '2.txt', 'lala']
D:\\djangoPro\\sample\test\1.txt
D:\\djangoPro\\sample\test\2.txt
我们要操作的文件夹

'''

 

posted @ 2022-10-15 18:29  布衣梦蝶1978  阅读(79)  评论(0编辑  收藏  举报