簡體   English   中英

Python中有沒有辦法找到名稱中數字最小的文件?

[英]Is there a way in Python to find a file with the smallest number in its name?

我有一堆由一個腳本創建的文檔,它們都是這樣調用的:

name_*score*

*score*是一個浮點數,我需要在另一個腳本中識別文件夾中編號最小的文件。 例子:

name_123.12
name_145.45

這應該返回字符串“name_123.12”

min接受一個關鍵函數。 您可以使用它來定義min的計算方式:

files = [
    "name_123.12",
    "name_145.45",
    "name_121.45",
    "name_121.457"
]

min(files, key=lambda x: float((x.split('_')[1])))

# name_121.45

您可以嘗試先獲取數字部分,然后將其轉換為浮點數和排序。 例如:

new_list = [float(name[5:]) for name in YOURLIST] # trim out the unrelated part and convert to float
result = 'name_' + str(min(new_list)) # this is your result

只是想說 Mark Meyer 完全正確,但您還提到您正在從目錄中讀取這些文件名。 在這種情況下,您可以在 Mark 的回答中添加一些代碼:

import glob, os
os.chdir("/path/to/directory")
files = glob.glob("*")

print(min(files, key=lambda x: float((x.split('_')[1]))))

通過提供目錄獲得最低值的方法。

import os
import re
import sys

def get_lowest(directory):
    lowest = sys.maxint
    for filename in os.listdir(directory):
        match = re.match(r'name_\d+(?:\.\d+)', filename)
        if match:
            number = re.search(r'(?<=_)\d+(?:\.\d+)', match.group(0))
            if number:
                value = float(number.group(0))
                if value < lowest:
                    lowest = value
    return lowest

print(get_lowest('./'))

擴展了蒂姆·比格萊森的回答,謝謝蒂姆!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM