我正在嘗試在 python 上運行以下 bash 命令并將該輸出保存到一個變數中。我是使用 bash 的新手,因此將不勝感激。
這是我的用例,我將資料存盤在 S3 存盤桶中(假設路徑為 s3://test-bucket/folder1/subd1/datafiles/)
在 datafiles 檔案夾中有多個資料檔案:
a1_03_27_2020_N.csv
a1_04_05_2021_O.csv
a1_07_16_2021_N.csv
我正在嘗試選擇最新的檔案(在本例中為 a1_07_16_2021_N),然后使用 pandas 讀取該資料檔案
這是我到目前為止所擁有的
選擇最新檔案的命令
ls -t a1*|head -1
但是后來我不確定如何 1-在 python 上運行該命令 2-如何將輸出保存為變數(我知道這不正確,但類似于
latest_file = os.environ['ls -t a1*|head -1'])
然后讀取檔案:
df = pd.read_csv(latest_file)
再次感謝您!
uj5u.com熱心網友回復:
Python 替換了大多數 shell 功能。您可以在 python 中進行搜索和過濾。不需要標注。
from pathlib import Path
dir_to_search = Path("test-bucket/folder1/subd1/datafiles/")
try:
latest = max(dir_to_search.glob("a1*.csv"), key=lambda path: path.stat().st_mtime)
print(latest)
except ValueError:
print("no csv here")
但是如果你想運行shell,里面的幾個函式subprocess就可以了。例如,
import subprocess as subp
result = subp.run("ls -t test-bucket/folder1/subd1/datafiles/a1* | head -1",
shell=True,
capture_output=True, text=True).stdout.strip()
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/314522.html
