markdown 基础用法
半方大(占半个中文)的空白 或 
全方大(占一个中文)的空白 或 
不断行的空白格 或 
常见操作用法
当前目录路径为:D:\myTempFile\testPythonFile
├── file1.py
├── file2.csv
├── file3.txt
├── sub_dir
│ ├── bar.py
│ └── foo.py
├── sub_dir_b
│ └── file4.txt
└── sub_dir_c
├── config.py
└── file5.txt
查询
os.getcwd() # 得到当前目录
# D:\myTempFile\testPythonFile
os.listdir(os.getcwd()) # 返回的是一个列表
- 检验给出的路径是否是一个文件:os.path.isfile()
- 检验给出的路径是否是一个目录:os.path.isdir()
base_path = r'D:\myTempFile\testPythonFile'
for entry in os.listdir(base_path):
# 使用os.path.isfile判断该路径是否是文件类型
if os.path.isfile(os.path.join(base_path, entry)):
print(entry)
for entry in os.listdir(basepath):
# 使用os.path.isdir判断该路径是否是目录类型
if os.path.isdir(os.path.join(basepath, entry)):
print(entry)
创建
- 创建文件
fp = open("test.txt", 'w') #直接打开一个文件,如果文件不存在则创建文件
fp.write(str) #把str写到文件中,write()并不会在str后加上一个换行符
fp.close() #关闭文件。
fp = open(r"2018/10/demo.txt", 'w')
fp.write("hello world!")
fp.close()
- 创建文件夹
os.mkdir("example_directory") #如果该目录已经存在,os.mkdir() 将抛出 FileExistsError 异常
- 创建多个文件夹
os.makedirs(path, mode=0o777)
path – 需要递归创建的目录,可以是相对或者绝对路径。。
mode – 权限模式。
# os.makedirs(r'2021/11/17', mode=0o770)
- 文件名匹配模式
下面这些是你可以使用的方法和函数:
1.endswith() 和 startswith() 字符串方法
2.fnmatch.fnmatch()
* 1.使用字符串方法
```
for f_name in os.listdir(base_path):
if f_name.endswith('.txt'):
print(f_name)
for f_name in os.listdir(base_path):
if f_name.startswith('hea'):
print(f_name)
```
* 2.使用 fnmatch 进行简单文件名模式匹配
```
import fnmatch
for f_name in os.listdir(base_path):
if fnmatch.fnmatch(f_name, '*.txt'):
print(f_name)
# fnmatch.fnmatch() ,这是一个支持使用 * 和 ? 等通配符的函数。例如,使用 fnmatch 查找目录中所有 .txt 文件
for f_name in os.listdir(base_path):
if fnmatch.fnmatch(f_name, 'data_*_backup.txt'):
print(f_name)
```
遍历
-
遍历目录和处理文件
os.walk(top[, topdown=True[, οnerrοr=None[, followlinks=False]]])
=>top -- 是你所要遍历的目录的地址, 返回的是一个三元组(root,dirs,files)。 root 所指的是当前正在遍历的这个文件夹的本身的地址 dirs 是一个 list ,内容是该文件夹中所有的目录的名字(不包括子目录) files 同样是 list , 内容是该文件夹中所有的文件(不包括子目录) =>topdown --可选,为 True,则优先遍历 top 目录,否则优先遍历 top 的子目录(默认为开启)。 如果 topdown 参数为 True,walk 会遍历top文件夹,与top 文件夹中每一个子目录。 onerror -- 可选,需要一个 callable 对象,当 walk 需要异常时,会调用。 followlinks -- 可选,如果为 True,则会遍历目录下的快捷方式(linux 下是软连接 symbolic link )实际所指的目录(默认关闭),如果为 False,则优先遍历 top 的子目录。
os.walk() 在每个循环中返回三个值: 当前文件夹的名称 当前文件夹中子文件夹的列表 当前文件夹中文件的列表
for dirpath, dirnames, files in os.walk('.', topdown=True):
# print(f"dirpath is : {dirpath}")
print(f'Found directory---------: {dirpath}')
for file_name in files:
print(file_name)
删除
- 删除
- 删除目录和文件
# 删除一个文件 删除该文件夹下的 hello.txt
os.remove(os.getcwd()+"\hello.txt")
# 要删除单个目录或文件夹
trash_dir = r'D:\myTempFile\testPythonFile\del'
try:
os.rmdir(trash_dir)
except OSError as e:
print(f'Error: {trash_dir} : {e.strerror}')
* 删除完整的目录树(不为空也删除,只能删除目录)
trash_dir = r'D:\myTempFile\testPythonFile\2022'
try:
shutil.rmtree(trash_dir)
except OSError as e:
print(f'Error: {trash_dir} : {e.strerror}')
复制移动
- 复制
- 复制文件
# 将源文件复制到目标文件,没有目标文件则创建,若有则覆盖
src = r'D:\myTempFile\testPythonFile\hello.txt'
dst = r'D:\myTempFile\testPythonFile\2020.txt'
shutil.copy(src, dst)
# 将源文件复制到目标文件,没有目标文件则创建,若有则覆盖
# 使用 .copy2() 保留有关文件的详细信息,例如上次访问时间,权限位,上次修改时间和标志。
src = r'D:\myTempFile\testPythonFile\hello.txt'
dst = r'D:\myTempFile\testPythonFile\202011.txt'
shutil.copy2(src, dst)
* 复制目录(包括目录下的文件)
# dst = shutil.copytree('data_1', 'data1_backup')
# print(dst) # data1_backup
# 在此示例中,.copytree() 将 data_1 的内容复制到新位置 data1_backup 并返回目标目录。 目标目录不能是已存在的。
# 它将被创建而不带有其父目录。 shutil.copytree() 是备份文件的一个好方法。
dst = shutil.copytree('2021','2222')
print(dst)
- 移动文件和目录
# dst = shutil.move('dir_1/', 'backup/')
# print(dst) # 'backup'
# 将文件夹 9 移动到 10 中,并且返回文件夹 9 的位置
dst = shutil.move('10', '9')
print(dst)
重命名
- 重命名文件和目录
# 拼接路径
# os.path.join() 函数用于路径拼接文件路径,可以传入多个参数。
# print os.path.join('111','222','333') #111/222/333
# print os.path.join('/111','222','333') #/111/222/333
# print os.path.join('/111','/222','333') #/222/333
# Python包含用于重命名文件和目录的 os.rename(src,dst):
os.rename('9', '9999')
os.rename('9999', '9')
os.rename('2020', '2022222.txt')
# os.listdir只返回文件名列表没有他们的绝对路径,并os.rename将尝试从当前目录中查找一个文件名,除非给出一个绝对路径。基本上,原来的代码只能在与os.listdir所调用的目录相同的目录下执行。
# 考虑执行下列操作:
import os
from os.path import join
path = '/home/gpuuser/Aditya_Nigam/lum2/'
for filename in os.listdir(path):
os.rename(join(path, filename), join(path, filename) + '.jpg')
常见操作一览
检验给出的路径是否是一个文件:os.path.isfile()
检验给出的路径是否是一个目录:os.path.isdir()
判断是否是绝对路径:os.path.isabs()
检验给出的路径是否真地存:os.path.exists()
返回一个路径的目录名和文件名:os.path.split()
eg os.path.split('/home/swaroop/byte/code/poem.txt')
结果:('/home/swaroop/byte/code', 'poem.txt')
分离扩展名:os.path.splitext()
获取路径名:os.path.dirname()
获取文件名:os.path.basename()