我需要获取时间戳记文件夹中的文件路径(以秒为单位)。文件夹名称示例0.000989965428461和1.00189731936e-05
而且我也需要写出时间。
我尝试了一些变体,key=以list.sort(key='')获得从坏到坏的不同结果。我缺乏对潜在问题的list.sort()理解:“理解”我的字符串是数字,但不理解x.xxe-xx也是数字格式。
我必须获取路径文件并将时间写为csv
#### import the simple module from the paraview
from paraview.simple import *
import os
import csv
import re
param='mitteQuer0'
fieldOne= 'U_zCut.vtk'
fieldTwo= 'p_rgh_zCut.vtk'
fieldThree= 'alpha.water_zCut.vtk'
fieldOneVTKs= []
fieldTwoVTKs=[]
fieldThreeVTKs=[]
time=[]
steps=[]
timeNsteps=[]
#Get path of the script
dir_path = os.path.dirname(os.path.realpath(__file__))
#Make folder path
path = dir_path + '/postProcessing/'+param
for path, dirs, files in os.walk(path, topdown=False):
dirs.sort()
for name in dirs:
fieldOneVTKs.append(os.path.join(path, name+'/'+fieldOne))
fieldTwoVTKs.append(os.path.join(path, name+'/'+fieldTwo))
fieldThreeVTKs.append(os.path.join(path, name+'/'+fieldThree))
with open('time.csv', 'w') as csvfile:
csvfile.write('Zeit,')
csvfile.write('\n')
for item in dirs:
csvfile.write(item +',')
csvfile.write('\n')
Run Code Online (Sandbox Code Playgroud)
之后需要大量工作代码才能使用带paraview的路径。
我使用os.walk和list.sort(),但是排序无法按我需要的方式工作。仅查看文件夹名称会得到什么:
0.000970221197898
0.000980099262637
0.000989965428461
1.00189731936e-05
2.00244250065e-05
3.00104958923e-05
Run Code Online (Sandbox Code Playgroud)
我需要的:
1.00189731936e-05
2.00244250065e-05
3.00104958923e-05
0.000970221197898
0.000980099262637
0.000989965428461
Run Code Online (Sandbox Code Playgroud)
float将字符串的值用作键进行排序,方法是替换dirs.sort()为dirs.sort(key=float)
例如
>>> lst = ['0.000970221197898', '0.000980099262637', '0.000989965428461', '1.00189731936e-05', '2.00244250065e-05', '3.00104958923e-05']
>>> lst.sort(key=float)
>>>
>>> pprint (lst)
['1.00189731936e-05',
'2.00244250065e-05',
'3.00104958923e-05',
'0.000970221197898',
'0.000980099262637',
'0.000989965428461']
Run Code Online (Sandbox Code Playgroud)