接收文件名中带有时间戳的文件的合适方法是什么?

What is the appropriate way to take in files that have a filename with a timestamp in it?

接收文件名中包含时间戳的文件并正确读取的正确方法是什么? 到目前为止,我想到的一种方法是将这些文件名放入一个文本文件中,以便一次读取所有文件。 例如,文件名如

1573449076_1570501819_file1.txt
1573449076_1570501819_file2.txt
1573449076_1570501819_file3.txt

进入名为 filenames.txt

的文件

然后像

with open('/Documents/filenames.txt', 'r') as f:
for item in f:
    if item.is_file():
        file_stat = os.stat(item)
        item = item.replace('\n', '')
        print("Fetching {}".format(convert_times(file_stat)))

我的问题是,鉴于实际名称中有时间戳,我将如何处理才能正确读取文本文件中的名称?一旦弄清楚我就可以转换它们。

如果你只想从文件名中获取时间戳,假设它们都使用相同的命名约定,你可以这样做:

import glob
import os
from datetime import datetime

# Grab all .txt files in the specified directory
files = glob.glob("<path_to_dir>/*.txt")

for file in files:
    file = os.path.basename(file)
    # Check that it contains an underscore
    if not '_' in file:
        continue
    # Split the file name using the underscore as the delimiter
    stamps = file.split('_')
    # Convert the epoch to a legible string
    start = datetime.fromtimestamp(int(stamps[0])).strftime("%c")
    end = datetime.fromtimestamp(int(stamps[1])).strftime("%c")
    # Consume the data
    print(f"{start} - {end}")
    ...

您需要添加一些错误检查和处理;例如,如果 stamps 数组中的第一个或第二个索引不是可解析的 int,这将失败。