首页 / 知识
用Python来自动化处理文件
2023-11-12 13:38:00
当代码投入生产时,你需要去组织代码的文件。读写、创建和运行许多代码文件是件非常耗时的事。本文将展示如何自动化这些繁琐的操作:
·遍历一个目录中的文件
·创建尚未建立的嵌套文件
·使用bashfor循环来运行一个有多个输入端的文件
在处理数据科学项目时,这些技巧为笔者节省了大量的时间。希望对你也有用!
遍历一个目录中的文件
如果有如下多个数据需要读取和处理:
├──data
│├──data1.csv
│├──data2.csv
│└──data3.csv
└──main.py
可以手动地一次读取一个文件:
importpandasaspddefprocess_data(df):
passdf=pd.read_csv(data1.csv)
process_data(df)df2=pd.read_csv(data2.csv)
process_data(df2)df3=pd.read_csv(data3.csv)
process_data(df3)
这是可行的,但是当有超过三个数据时,效率就会变得很低。如果上述脚本中唯一改变的是数据,为什么不用for循环来访问每个数据呢?
下面的脚本允许我们遍历指定目录中的文件:
importos
importpandasaspd
defloop_directory(directory:str):
'''Loopfilesinthedirectory'''
forfilenameinos.listdir(directory):
iffilename.endswith(".csv"):
file_directory=os.path.join(directory,filename)
print(file_directory)
pd.read_csv(file_directory)
if__name__=='__main__':
loop_directory('data/')
data/data3.csv
data/data2.csv
data/data1.csv
对上面脚本的解释如下:
·forfilenameinos.listdir(directory):在一个指定的目录中遍历文件。
·iffilename.endswith(".csv"):运行(访问?)以‘.csv’结尾的文件。
·file_directory=os.path.join(directory,filename):连接父目录('data')和该目录中的文件。
现在就可以在‘data’目录中访问所有的文件啦!
如果不存在,就创建嵌套文件
有时你可能想要通过创建嵌套文件来管理代码或模型,在之后更容易地寻找。比如,可以运用‘model1’来明确规定一个有着具体特征的程序。当使用model1时,你可能想要尝试运用不同种类的机器学习模型来训练数据(‘model1/XGBoost’)。
在使用各个机器学习模型时,我们甚至想要去保存不同样式的模型,因为它们所运用的超参数存在不同。因此,模型目录就像下面的示例一样复杂:
model
├──model1
│├──NaiveBayes
│└──XGBoost
│├──version_1
│└──version_2
└──model2
├──NaiveBayes
└──XGBoost
├──version_1
└──version_2
对每个所创的模型手动地建立嵌套文件可能需要花费很长的时间。有没有能够自动化这个进程的方法?有,通过使用os.makedirs(datapath)。
defcreate_path_if_not_exists(datapath):
'''Createthenewfileifnotexistsandsavethedata'''
ifnotos.path.exists(datapath):
os.makedirs(datapath)
if__name__=='__main__':
create_path_if_not_exists('model/model1/XGBoost/version_1')
运行上面的文件,可以看到嵌套文件‘model/model2/XGBoost/version_2’自动建成了。现在便可以将模型或者数据储存到新的目录里了!
importjoblib
importos
defcreate_path_if_not_exists(datapath):
'''Createthenewfileifnotexistsandsavethedata'''
ifnotos.path.exists(datapath):
os.makedirs(datapath)
if__name__=='__main__':
#Createdirectory
model_path='model/model2/XGBoost/version_2'
create_path_if_not_exists(model_path)
#Savefile
joblib.dump(model,model_path)
Bashfor循环:用不同参数运行一个文件
如果要运行一个具有不同参数的文件怎么办呢?比如,可能要用同一个脚本去预测使用不同模型的数据。
importjoblib
#df=...
model_path='model/model1/XGBoost/version_1'
model=joblib.load(model_path)
model.predict(df)
如果一个脚本需要长时间来运行且有着多个要运行的模型,用脚本一个一个地运行会是非常耗时。有什么办法能让电脑独立自动地用一条命令行运行第1,2,3...,10个模型吗?
有的,可以使用bashfor循环。首先,使用sys.argv来解析命令行参数。如果想要在命令行上重写配置文件可以使用类如hydra的工具。
importsys
importjoblib
#df=...
model_type=sys.argv[1]
model_version=sys.argv[2]
model_path=f'''model/model1/{model_type}/version_{model_version}'''
print('Loadingmodelfrom',model_path,'fortraining')
model=joblib.load(model_path)
mode.predict(df)
>>>pythontrain.pyXGBoost1
Loadingmodelfrommodel/model1/XGBoost/version_1fortraining
脚本已经被指令为使用模具第一版的XGBoost来预测命令行上的数据。现在便能在不同版本的模具中使用bashfor循环。如果能用Python使用for循环,也可以在如下的终端上达成上述的目标。
$forversionin234
>do
>pythontrain.pyXGBoost$version
>done
敲击Enter来分隔各行,输出:
Loadingmodelfrommodel/model1/XGBoost/version_1fortraining
Loadingmodelfrommodel/model1/XGBoost/version_2fortraining
Loadingmodelfrommodel/model1/XGBoost/version_3fortraining
Loadingmodelfrommodel/model1/XGBoost/version_4fortraining
现在便可以让脚本使用不同的模具来运行啦!
恭喜!现在你已经学会如何一次自动地读取和创造多个文件,如何用不同的参数运行一个文档,过去丢在琐碎工作中的时间可以利用起来做更重要的任务啦。
以上内容为大家介绍了用Python来自动化处理文件,希望对大家有所帮助,如果想要了解更多Python相关知识,请关注我们http://www.mobiletrain.org/
最新内容
相关内容
Python网络编程调用接收数据的三种
Python网络编程调用接收数据的三种方法,数据,代码,基础,通用,通讯,服务,网络,培训,方法,报文,最近在使用python进行网络编程开发一个通用的tc为什么开发人员喜欢在机器学习和人
为什么开发人员喜欢在机器学习和人工智能项目中使用Python?,代码,项目,数据,人工智能,平台,异常,增长,灵活,时间,工具,1.Python是灵活的PythoPython实现批量文件的压缩处理
Python实现批量文件的压缩处理,项目,信息,分析,数据,软件,培训,文件夹,文件,源文件,目标,一、前言接到项目求助,需要对上千个文件夹中的文件进数据科学领域Python比R语言更好
数据科学领域Python比R语言更好,数据,公司,工具,时间,项目,工作,庞大,受益,系统,代码,经常有学员问我们,在数据科学领域里,到底是该选Python呢,Python 3.6 中针对文件系统的神奇
Python 3.6 中针对文件系统的神奇方法,数字,代码,数据,标准,信息,培训,首次,工作,文件名,常数,Python3.6首次发布于2016年,尽管它已经发布了很为何你的Python代码应是扁平与稀疏
为何你的Python代码应是扁平与稀疏的,代码,培训,信息,观察,设计,工具,嵌套,闻闻,程序员,沉思,Python之禅之所以得名,正是由于它那简明扼要的规如何提速优化python代码?
如何提速优化python代码?,代码,时间,数据,新增,写法,包装,情况,下来,面临,工作,Python是一种脚本语言,相比C/C++这样的编译语言,在效率和性能方Python如何在后台自动解压各种压缩
Python如何在后台自动解压各种压缩文件?,代码,综合,工具,分析,检测,培训,文件,文件夹,模块,结尾,一、需求描述编写一个Python程序,每次下载压Python语言自带的数据结构有哪些
Python语言自带的数据结构有哪些,异常,数字,数据,元素,序列,培训,位置,名称,分析,括号,Python作为一种脚本语言,其要求强制缩进,使其易读、美观提升Python数据分析能力的方法
提升Python数据分析能力的方法,分析,数据,工具,代码,时间,环境,报告,信息,培训,标准,1.Pandas分析包这个工具的好处是显而易见的。下面的动画Python处理文件的几个常用小知识
Python处理文件的几个常用小知识,数据,代码,信息,文件,系统,培训,分析,交通,名称,名字,python这门语言有个很大的用途就是使用它来进行文件处用于业余项目的优秀 Python 库
用于业余项目的优秀 Python 库,数据,工具,项目,信息,培训,系统,地图,下来,工作,管理,1.在数据库中即时保存数据:Dataset当我们想要在不知道最