Python的os和sys模块的实例应用场景(待续)
转换工作目录
有些必须要在当前工作目录下执行,而我们的脚本位置却不在当前目录
import os
import sys
path=r"D:xxxx"
# 列出该文件夹里的所有文件,这里获取的是一个列表啊
fileList = os.listdir(path)
currentpath = os.getcwd()
# 这个改工作目录好厉害啊,工作目录不同会怎样,在python中
os.chdir(path)
# 这里可对当前的想要执行的目录执行该
def demo():
pass
# 改工作目录
os.chdir(currentpath)
# 刷新
sys.stdin.flush()
合成md文件
数据处理若是放在列表中,把多个字符串格式的元素存放在列表中,写入使用writelines
import os
import sys
path=r"D:\\xxx"
fileList = os.listdir(path) # 列出该文件夹里的所有文件,这里获取的是一个列表啊
currentpath = os.getcwd()
# 更改工作目录
os.chdir(path)
contents = []
for md in fileList:
# print(md)
with open(md, 'r', encoding='utf-8') as f:
# 文件较大,按行读(只有内存不够时候才用)
contents.append(f.read()) # read()把文章一次性读入
# with open("result.md", "a+", encoding='utf-8') as f:
# f.writelines(contents)
with open("result.md", 'w',encoding='utf-8') as f:
f.writelines(contents)
os.chdir(currentpath)
# 刷新
sys.stdin.flush()
递归出指定目录下地所有子文件夹/子文件
返回可指定带路径的文件,和不带路径的文件
cur_path 和file
import os
def show_files(path, all_files):
# 首先遍历当前目录所有文件,listdir只有文件
file_list = os.listdir(path)
# 准备循环判断每个元素是否是文件夹还是文件,是文件的话,把名称传入list,是文件夹的话,递归
for file in file_list:
# 利用os.path.join()方法取得路径全名,并存入cur_path变量,否则每次只能遍历一层目录
cur_path = os.path.join(path, file)
# 判断是否是文件夹
if os.path.isdir(cur_path):
show_files(cur_path, all_files)
else:
# 返回所有子文件路径并加到列表中
# 若想输出的是带路径的文件,传入的则是cur_path
# 若想直接输出文件名则,传入的是file
all_files.append(cur_path)
return all_files
复制文件到指定目录
新的文件需要指定目录才可以
import os
import shutil
oldname= r"D:\xxxx\result.md"
newname=r"D:\xxxx\Test\a.md"
shutil.copyfile(oldname,newname)
实际案例
提取某文件夹的所有.pdf文件,然后将其复制在指定的目录下
import os
import shutil
## 递归遍历出所有的子文件夹
def show_files(path, all_files=[]):
# 首先遍历当前目录所有文件,listdir只有文件
file_list = os.listdir(path)
# 准备循环判断每个元素是否是文件夹还是文件,是文件的话,把名称传入list,是文件夹的话,递归
for file in file_list:
# 利用os.path.join()方法取得路径全名,并存入cur_path变量,否则每次只能遍历一层目录
cur_path = os.path.join(path, file)
# 判断是否是文件夹
if os.path.isdir(cur_path):
show_files(cur_path, all_files)
else:
# 返回所有子文件路径并加到列表中
# 若想输出的是带路径的文件,传入的则是cur_path
# 若想直接输出文件名则,传入的是file
all_files.append(cur_path)
return all_files
path = r"D:xxx"
all_files = show_files(path)
new_files = r"D:xxx
for i in all_files:
# 提取指定后缀的文件
if ".pdf" in i :
a = os.path.split(i)
a = a[-1]
shutil.copyfile(i,new_files + '\{}'.format(a))
11/3更新
如何让一个python文件以任何方式启动,我们都可以读取已知文件的数据
os.path.dirname(os.path.realpath)
直接写绝对路径,但是给其他人就很不方便,那就用相对位置,相对于当前文件的位置。
这里可以用os,也可以用../来获取(表示当前文件所在的目录的上一级目录)
./代表当前目录
努力拼搏吧,不要害怕,不要去规划,不要迷茫。但你一定要在路上一直的走下去,尽管可能停滞不前,但也要走。