日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程语言 > python >内容正文

python

python递归列文件_python-Bash:从最大列递归地向文件写入一行

發(fā)布時(shí)間:2023/12/19 python 26 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python递归列文件_python-Bash:从最大列递归地向文件写入一行 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

回到my previous question,我發(fā)現(xiàn)問題并沒有完全解決.這是問題所在:

我有名為RUN1,RUN2和RUN3的目錄

每個(gè)目錄都有一些文件.目錄RUN1具有文件mod1_1.csv,mod1_2.csv,mod1_3.csv.目錄RUN2具有文件mod2_1.csv,mod2_2.csv,mod3_3.csv等.

mod1_1.csv文件的內(nèi)容如下所示:

5.71 6.66 5.52 6.90

5.78 6.69 5.55 6.98

5.77 6.63 5.73 6.91

而mod1_2.csv看起來像這樣:

5.73 6.43 5.76 6.57

5.79 6.20 5.10 7.01

5.71 6.21 5.34 6.81

在RUN2中,mod2_1.csv如下所示:

5.72 6.29 5.39 5.59

5.71 6.10 5.10 7.34

5.70 6.23 5.23 6.45

并且mod2_2.csv看起來像這樣:

5.72 6.29 5.39 5.69

5.71 6.10 5.10 7.32

5.70 6.23 5.23 6.21

我的目標(biāo)是為每個(gè)RUN *目錄獲取第4列的最小值的行,并將其和將其寫入新的.csv文件的模型寫入.現(xiàn)在,我有以下代碼:

#!/bin/bash

resultfile="best_results_mlp_2.txt"

for d in $(find . -type d -name 'RUN*' | sort);

do

find $d -type f -name 'mod*' -exec sort -k4 {} -g \; | head -1 >> "$resultfile"

done

但是它并不總是返回第4列的最小值(我瀏覽了文件并進(jìn)行了檢查),并且不包括包含最小數(shù)字的文件名.為了澄清,我想要一個(gè)包含以下內(nèi)容的.csv文件:

5.73 6.43 5.76 6.57 mod1_2.csv

5.72 6.29 5.39 5.59 mod2_1.csv

解決方法:

如果要從所有文件中獲取最小值,則必須立即對(duì)所有內(nèi)容進(jìn)行排序.該命令當(dāng)前按文件對(duì)文件進(jìn)行排序,因此您將在第一個(gè)排序的文件中獲得最小值.

檢查之間的區(qū)別

find "$d" -type f -name 'mod*' -exec sort -k4 -g {} +

find "$d" -type f -name 'mod*' -exec sort -k4 -g {} \;

另外,除非確實(shí)需要,否則建議使用-n而不是-g.

查看信息coreutils的“一般調(diào)用”的–general-numeric-sort部分,以獲取更多詳細(xì)信息.

編輯:剛剛檢查了您以前的問題的鏈接,現(xiàn)在我看到您需要使用–general-numeric-sort

就是說,這是一種將相應(yīng)文件名放入各行中的方法,以便在輸出中使用它:

find "$d" -type f -name 'mod*' -exec awk '{print $0, FILENAME}' {} \;|sort -k4 -g |head -1 >> "$resultfile"

本質(zhì)上,awk是分別為每個(gè)文件調(diào)用的. Awk打印文件的每一行,并在其后附加相應(yīng)的文件名.然后將所有這些行傳遞進(jìn)行排序.

注意:上面的代碼將打印文件名及其找到文件的路徑.如果您只想獲取文件的基本名稱,則可以改用以下awk命令(其余與上面相同):

awk 'FNR==1{ cnt=split(FILENAME, arr, "/"); basename=arr[cnt] } { print $0, basename}'

標(biāo)簽:python,bash

總結(jié)

以上是生活随笔為你收集整理的python递归列文件_python-Bash:从最大列递归地向文件写入一行的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。