在学习os模块及os.path模块相关函数使用时,为了稍微深入掌握下(其实也没想太深入),就做了几道题,于是就遇到了这么一个问题,第一次解决我认为这不是问题,第二次稍微有所不同,就发现第一次解决的方案有局限性,于是网上查找解决之道,发现这块儿资料文章很差劲(自己没咋搜到),自己好好思索了一番,找到了解决之道,记录下来,以供参考。
关于判断指定路径下的文件是文件还是文件夹用的是os.path模块中的isdir(path)即判断指定路径是否存在且是一个目录,但有个问题,就是python源文件所在路径就是当前工作路径,换言之,就是pyhon源文件如果在你要判断的那个路径下,你就不用更改当前工作路径,说的有点不好理解,就举实例说明
写了个名为test7的py文件,源代码如下:
import os
def test_folder():
path = input('请输入待查找的初始目录:')
files_list = os.listdir(path)
print(os.getcwd())
for file in files_list:
print(file)
if(os.path.isdir(file)):
print('有文件夹')
if __name__ == '__main__':
test_folder()
但是如果把test7.py文件移出该路径,保存到D:\study\python_demo路径下,那么运行结果如下
通过这个案例可以知道运行的python源文件所在路径就是当前工作路径,而使用os.path.isdir()函数判断文件是文件还是文件夹时的路径必须是当前路径才能生效,所以做如下修改
import os
def test_folder():
path = input('请输入待查找的初始目录:')
os.chdir(path) # 更改当前目录
files_list = os.listdir(path)
print(os.getcwd())
for file in files_list:
print(file)
if(os.path.isdir(file)):
print('有文件夹')
if __name__ == '__main__':
test_folder()
运行结果如下
这个问题的发现是遇到如下这题发现的
编写一个程序,用户输入文件名以及开始搜索的路径,搜索该文件是否存在。如遇到文件夹,则进入文件夹继续搜索,程序实现如图:
程序实现如下:
import os
def search_route():
path = input('请输入待查找的初始目录:')
f_name = input('请输入需要查找的目标文件:')
os.chdir(path)
files_list = os.listdir(os.getcwd())
for file in files_list:
os.chdir(path)
if(os.path.isdir(file)):
path1 =path+'\\'+ file
os.chdir(path1)
f_list = os.listdir(os.getcwd())
for f in f_list:
if(os.path.isdir(f)):
path2 =os.getcwd()+ '\\'+f
os.chdir(path2)
f_list_i = os.listdir(os.getcwd())
for f_i in f_list_i:
if f_i == f_name:
print(path2 +'\\'+f_name)
else:
if f == f_name:
print(path1+'\\'+f_name)
else:
if file == f_name:
print(path+'\\'+f_name)
if __name__ == '__main__':
search_route()
程序有些瑕疵,搜索只搜索了2层,但要实现的思路大致没有问题
这个问题走了不小的弯路,一直不知道哪里有问题,一层层深挖才找到了问题所在,网上也没有现成可借鉴的,凄惨,总归还是解决了