如何重命名最新下载的文件?

问题描述 投票:0回答:2

我正在使用 Selenium 来自动生成报告,但是当我下载它时,最后一个数字会发生变化,就好像它是一个序列一样,例如:0001849191、0001849192 等等。我无法让它继续遵循顺序,因为如果其他人生成报告,它可以跳过一个数字,而 python 不明白它遵循顺序并最终不重命名,所以我想让它成为可能检查上次下载的文件是什么,然后他重命名了 .xlsx 文件。这是我尝试更多但没有成功的代码:

文件路径 = r'C:\Users\Luis.Serpa\Downloads'

filename = max([filepath +'\'+ f for f in os.listdir(filepath)], key=os.path.getmtime)

python selenium visual-studio-code webbrowser-control
2个回答
2
投票

您可以使用 glob 和 os 模块来获取最新的文件。首先导入 os、glob 模块,即:

import os
import glob

然后定义路径。我的示例给出了任何下载文件夹的路径。

home = os.path.expanduser('~')
path = os.path.join(home, 'Downloads')

“*”为必填项。

path_a = path + "/*" # * means (match all), if specific format required then *.csv This will get all the files ending with .csv
list_of_files = glob.glob(path_a) 
latest_file = max(list_of_files, key=os.path.getctime)

这是新文件的名称

new_file = os.path.join(path, "b.kml")
print(latest_file)
#prints a.txt which was latest file i created
os.rename(latest_file, new_file)

文件名变成b.kml


0
投票

首先,

'\'
是无效字符串,因为
\
用于转义序列。
'\\'
会给你一个带有单个反斜杠的字符串。

但更重要的是,最好不要以这种方式构建路径;您应该使用 os.path.join 从组件创建路径:

filename = max([os.path.join(filepath, f) for f in os.listdir(filepath)], key=os.path.getmtime)

如果我给自己的下载文件夹添加

filepath
,此代码可以很好地在我的操作系统上查找最新文件。

对于具有更好的跨平台路径支持的更现代的 python3 方法,您还可以使用 pathlib

获得文件路径后,可以使用 os.rename 重命名它。

© www.soinside.com 2019 - 2024. All rights reserved.