接收文件名中带有时间戳的文件的合适方法是什么?
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,这将失败。
接收文件名中包含时间戳的文件并正确读取的正确方法是什么? 到目前为止,我想到的一种方法是将这些文件名放入一个文本文件中,以便一次读取所有文件。 例如,文件名如
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,这将失败。