- 自己的代码文件名称不能跟模块名称相同(否则import该模块时导入的是同名的文件),也不能放在同一路径下
- 关于路径中的“/”和反斜杠“”
- Win中用来分隔文件夹
- 在Python中还用于转义,因此就变成了\
- Mac和Linus用/
#输出os的路径
import os
print(os.getcwd())
如果程序在不同的系统中运行,则可以:
import os
print(os.path.join('MyProjects','AI'))
- 绝对路径和相对路径
- 相对路径,如:./file
输出os文件夹下的文件夹和文件
import os
print(os.listdir())
按行输出
for item in os.listdir():
print(item)
判断是文件夹还是文件
for item in os.listdir():
print(item, os.path.isdir(item))
for file in os.scandir():
print(file.name, file.path, file.is_dir())
作业
- 找出当前目录下所有非文件夹的文件
- 统计其中包含有“Python”单词的文件数,不区分大小写
- 输出文件数量
import os
summ = 0
file = []
for i in os.listdir():
if os.path.isdir(i) == False:
print(i)
file.append(i)
if 'python' in i.lower():
summ +=1
print(summ)
print(len(file))
#用累加和求列表长度两种方法来计数
搜索文件
import os
for dirpath, dirnames, filenames in os.walk('./'):
print(f'{dirpath}:')
print(filenames)
# 输出当前文件夹下的所有文件(包括子文件夹)
# 匹配文件类型有几种方法:用字符串匹配, glob模块,fnmatch匹配
print('abc.txt'.startswith('ab')) == True
print('abc.txt'.endswith('.txt')) == True
import glob
print(glob.glob('*.py'))
# 不包含子文件夹
# 把更深层的文件找出
import glob
print(glob.glob('**/*.py', recursive=True))
# **表示任意层文件夹
# recursive=True会不断进入文件夹
import fnmatch
print(fnmatch.fnmatch('lesson1.py', 'le*1.py') == True
print(fnmatch.fnmatch('lesson1.py', 'le*[1-9].py') == True
# 匹配模式:*-匹配所有,?-匹配任意单个字符,[sep]-匹配sep中的任意字符,[!sep]-匹配任何不在sep中的字符
返回文件信息
import os
for file in os.scandir():
print(file.name, file.stat().st_size / 1024)
# st_size:文件大小(单位:byes),除以1024即为KB
# s_atime:文件最近访问时间
# st_mtime:文件最近创建时间
# st_ctime:Windows下表示创建时间
# st_birthtime:只在Mac和Linux下可用,表示创建时间
# 转换时间戳
import time
print(tme.ctime(156776448))
# Fri Sep 6 18:07:08 2019
import datetime
that_time = datetime.datetime.fromtimestamp(156776448)
print(that_time)
print(that_time.hour, that_time.minute, that_time.second)
# 2019-09-06 18:07:08
# 18 7 8
作业
- 找出文件夹下(包括子文件夹)的所有大于100MB的.zip文件
- 筛选以上文件,早于2019年创建的
- 输出这些文件的路径