1、os.walk遍历目录和文件:
#os.walk
import os
for root,dirs,files in os.walk("e:\\test"):
#遍历test目录下的所有子目录和文件
print ("当前正在遍历的目录:",root)
for dir in dirs:
print("子目录:",dir)
for file in files:
print("文件:",file)
print("*"*10)
注意:隐藏的文件也会打印出来!!!
2、小题目想获取所有子目录的绝对路径
#想获得文件的绝对路径
#拿到某个文件所有的文件的目录以及文件的路径
#os.walk
import os
dir_path = []#绝对路径
file_path = []#文件路径
for root,dirs,files in os.walk("e:\\test"):
#遍历test目录下的所有子目录和文件
print ("当前正在遍历的目录:",root)
for dir in dirs:
print("子目录:",dir)
sub_dir_path = os.path.join(root,dir)
dir_path.append(sub_dir_path)
for file in files:
print("文件:",file)
path = os.path.join(root,file)
file_path.append(path)
print("*"*10)
print(dir_path)
print(file_path)
判断一下文件夹中有多少个py文件
三种方法判断文件的结尾
方法1:切片
py_file_num = 0
for path in file_path:
if path[-3:] ==".py":
py_file_num+=1
print("python的文件个数是:%s"%py_file_num)
方法2:splitext
>> import os
>>> path="e:\\test\\a.py"
>>> os.path.splitext(path)
('e:\\test\\a', '.py')
>>> os.path.splitext(path)[1]
'.py'
>>> if os.path.splitext(path)[1]==".py":
... print(".py找到了")
...
.py找到了
方法3:endswith
>>> if path.endswith(".py"):
... print(".py文件找到了")
...
.py文件找到了
3、模块:python文件
包:是一个目录(包含python文件)
Pythonpath:查找模块或者包的路径
注意:两个必须在同一个目录下
import compute #模块名—》python的文件名
#这个模块需要在同一个目录下,否则可能会找不到
print(compute.add(1,2)) #调用compute模块中的add函数
4、if name==“main”:判断当前文件名
def add(a,b):
return a+b
if __name__=="__main__":
#只有a.py文件本身被执行的时候,if下的代码才会被执行,
#如果此文件被别的文件import那么不会执行if下的代码块
print("a module is invoked!")
5、pythonpath的查找
import compute #模块名—》python的文件名
#当程序有import 的时候,python自动去查找这个模块
#3个路径去查找
#1 当前路径
#2 系统设置的pythonpath路径里去找
#3 在python site-package下去找
#这个模块需要在同一个目录下,否则可能会找不到
print(compute.add(1,2)) #调用compute模块中的add函数
import sys
print(sys.path)
第一:pythonpath路径下
6、找不到包
1 没装
2 路径不对,pythonpath
import sys
sys.path.append(“d:\”)
import sys
sys.path.append(“d:\”)#临时加的,程序结束,这个路径就没了
import sys
sys.path.append(“d:\”)#临时加的,程序结束,这个路径就没了
from compute1 import add #减少了前缀的编写,产生冲突
def add(a,b):#就近的优先
print(“啥也没干!”)
print(add(1,2))
#compute1:就一个命名空间,compute1.xxxx方式。防止冲突
#from compute1 表示把compute1下面的所有名字,引入到当前文件
#命名空间
import compute1.compute1
print(compute1.compute1.add(3,4))
from compute1.compute1 import add #从包下引入一个模块
print(add(3,4))
刚才的包名和执行文件不在一个路径下引用是不是也要用绝对路径
import compute1.compute1(第一个是目录的名字,第二个是python文件的名字)
print(compute1.compute1.add(3,4))
from compute1.compute1 import add #从包下引入一个模块
print(add(3,4))
#找包找模块都是遵循相同的查找方法
#当前路径、pythonpath、site-package下