python - 如何在多个文件上运行脚本python
问题描述
我在一个文件夹中有多个 .txt 文件(file1、file2、file3、file4、file5、....),我需要在大量文件上运行。
我已创建此代码以重新排序并进行一些更改...我想将其应用于原始文件夹(路径)中的多个 txt 文件,并将它们分别保存到另一个文件夹(在最后一个文件夹内)或另一个路径中
有人可以帮忙吗?
import pandas as pd
import numpy as np
import os
import glob
import datetime
#from datetime import datetime
df1=pd.read_csv("D:\\Spyder2019\\38A.txt", sep='\s+')
#############################################33#
#to change name of column and add Temp ms column
df1=df1.rename(index=str, columns={"Temps":"Heure", "Force":"Force(N)", "Vitesse":"Vitesse(RPM)", "Puissance":"Puissance(w)","Torque":"Torque(N/m)","Angle":"Angle(deg)"})#to change name Temps to Heure
dtemp=df1['Heure']#to change datetime values into seconds and microseconds in Heure
dtemp=pd.to_datetime(df1.Heure) #change to datetime values float
dtemp1=dtemp.dt.microsecond #dtemp1 object in microseconds with 6 decimals
dtempms=dtemp1 / 1000000 #dtemp1 object into 2 decimals
dtemp2=dtemp.dt.second #dtemp2 object in seconds
df1['Temps_ms']= dtempms + dtemp2 #add second and microseconds to the object
#################################################
# to transform the Heure data into sec and microsec
df1=df1[['Date','NoBille','Heure','Temps_ms','Force(N)','Vitesse(RPM)','Puissance(w)','Torque(N/m)','Angle(deg)']]# reorder the dataframe
io=df1.iat[0,3]
#to transform the Heure data into seconds ans microseconds
df1['Temps(ms)'] = np.where(df1['Temps_ms'] - io <0, df1['Temps_ms'] + 60 - io, df1['Temps_ms'] -io)
df1=df1.drop(columns=['Temps_ms'])#to eliminate column Temps_ms
df1=df1[['Date','NoBille','Heure','Temps(ms)','Force(N)','Vitesse(RPM)','Puissance(w)','Torque(N/m)','Angle(deg)']]# to reorder the final dataframe
##############################################################################
print(df1.head())
df1.to_csv('data1.txt', index = False)
解决方案
如果此脚本可以应用于“输入文件夹”中的所有数据库,则可以将 DB 名称作为参数传递给 python 脚本:
import sys
#...your other imports...
### take the first argument passed in commmand line as db_name and second as output_file name
db_name = sys.argv[1]
output_filename = sys.argv[2]
df1 = pd.read_csv(db_name, sep='\s+')
#...rest of your script...
df1.to_csv(output_filename, index = False)
然后 yuo 可以通过外部循环轻松地在输入目录中的文件上调用 python 脚本,例如 ex。在 bash 中:
mkdir <output-dir>
ls <input-dir> | while read file; do
output_filename="<output-dir>/$file.output.txt"
python <your-script-name> $file $output_filename
done
它会自动获取文件,操作 python 脚本并将它们写在 output-dir 中,并具有指定的扩展名
推荐阅读
- docker - 如何使用 Dockerfile 在启动 docker 容器上运行 jboss-cli
- excel - 循环遍历 2 个数组 - 在表中查找 Header 然后将值粘贴到正确的位置
- python - 删除字典python中的反向重复项
- debugging - 带有 nativescript-vue 的 Chrome devtools 不起作用
- xml - XPath 获取除一个子节点外的完整节点
- python - 程序只读取 csv 文件的第一行
- struct - 为什么我不能多次调用变异函数?
- reactjs - 如何在枢轴对象上获取前景色
- invoice - 将日期字段添加到发票odoo12的问题
- xml - 如何使用 XSLT 从另一个 XML 文档提供属性值?