-4

我对python很陌生。我想根据文件名而不是数据类型读取文件。假设我在一个文件夹中有 Hello.txt_1、Hello.txt_2、Hello.txt_3,这些文件是由外部代码自动创建的,Hello.txt_3 是最新文件。现在,我想阅读最新创建的文件 Hello.txt_3 并检查其内容。如何在 python 中完成?我已经找到了具有通用数据类型的文件,但没有找到通用文件名。

4

2 回答 2

1

使用 glob 执行通配符匹配。以下示例将查找所有按您声明命名的文件,last_file并将包含按创建时间(或者None如果未找到文件)最新的名称。

import glob
import os

last_file = None
time=0
for i in glob.glob("Hello.txt_*"):
    if os.path.getctime(i) > time: 
        last_file = i

PS:这个问题是在非常初学者的水平,但是应该很容易通过谷歌搜索解决。

于 2013-04-11T08:04:20.170 回答
0

根据我对问题的理解,您可能想忽略文件类型,因为您不能依赖它们来告诉您您想知道的内容。如果文件类型包含数字/字母数字,“排序”将按相反顺序对其进行排序。然后你可以简单地阅读第一个:

#!/usr/bin/python
from os import listdir
from os.path import isfile, join

#this is where you declare you directory
directory_2_look = '/var/tmp/lee/'

#This creates a list of the contents of your directory
files = [ f for f in listdir(directory_2_look) if isfile(join(directory_2_look,f)) ]

#this sorts the files for you in reverse order
files = sorted(files, reverse=True)
print files[0]

#this allows you to read the last file and print it out. If you want to write to it simply change the 'r'
file_to_read = open(join(directory_2_look,files[0]), 'r')

print file_to_read.read()

结果看起来有点像这样:

['script.py', 'file.txt_99', 'file.txt_4', 'file.txt_3', 'file.txt_22', 'file.txt_21', 'file.txt_2', 'file.txt_1', ' file.txt_0'] script.py

!/usr/bin/python from os import listdir from os.path import isfile, join directory_2_look = '/var/tmp/lee/' files = [ f for f in

listdir(directory_2_look) if isfile(join(directory_2_look,f)) ] print sorted(files, reverse=True) files = sorted(files, reverse=True) print files[0] file_to_read = open(join(directory_2_look,files[0 ]), 'r')

打印 file_to_read.read()

于 2013-04-11T08:52:34.053 回答