获取文件最后修改日期和文件名 pyspark 的脚本
Posted
技术标签:
【中文标题】获取文件最后修改日期和文件名 pyspark 的脚本【英文标题】:script to get the file last modified date and file name pyspark 【发布时间】:2021-05-07 07:23:19 【问题描述】:我有一个挂载点位置,它指向我们有多个文件的 blob 存储。我们需要找到文件的最后修改日期以及文件名。我正在使用以下脚本 文件列表如下:
/mnt/schema_id=na/184000-9.jsonl
/mnt/schema_id=na/185000-0.jsonl
/mnt/schema_id=na/185000-22.jsonl
/mnt/schema_id=na/185000-25.jsonl
import os
import time
# Path to the file/directory
path = "/mnt/schema_id=na"
ti_c = os.path.getctime(path)
ti_m = os.path.getmtime(path)
c_ti = time.ctime(ti_c)
m_ti = time.ctime(ti_m)
print(f"The file located at the path path was created at c_ti and was last modified at m_ti")
【问题讨论】:
您显然需要从路径中获取文件列表并遍历该列表以获取文件路径并获取所需信息。 是的,我需要那个。能否请您帮助解决这个问题 哦,操。我完全错过了“blob 存储”这一点。我的错!感谢@AxelR! 【参考方案1】:如果您使用操作系统级别的命令来获取文件信息,那么您无法访问该确切位置 - 在 Databricks 上,它位于 Databricks 文件系统 (DBFS) 上。
要在 Python 级别上实现这一点,您需要在路径前添加 /dbfs
,因此它将是:
...
path = "/dbfs/mnt/schema_id=na"
for file_item in os.listdir(path):
file_path = os.path.join(path, file_item)[:5]
ti_c = os.path.getctime(file_path)
...
注意 [:5]
- 它用于从路径中去除 /dbfs
前缀以使其与 DBFS 兼容
【讨论】:
【参考方案2】:这是实现它的一种方法:
import os
import time
# Path to the file/directory
path = "/dbfs/mnt/schema_id=na"
for file_item in os.listdir(path):
file_path = os.path.join(path, file_item)
ti_c = os.path.getctime(file_path)
ti_m = os.path.getmtime(file_path)
c_ti = time.ctime(ti_c)
m_ti = time.ctime(ti_m)
print(f"The file file_item located at the path path was created at c_ti and was last modified at m_ti")
【讨论】:
FileNotFoundError: [Errno 2] No such file or directory: '/mnt/schema_id=na' 即使路径很好,我也可以使用 %fs ls '/mnt/ 查看其中的文件schema_id=na' 我仍然收到错误 FileNotFoundError: [Errno 2] No such file or directory: '/mnt/schema_id=na' 这就是错误 可能的权限问题? 我可以看到文件列表,也可以将它们作为数据框读取 您是以用户身份还是以 root 身份运行脚本?以上是关于获取文件最后修改日期和文件名 pyspark 的脚本的主要内容,如果未能解决你的问题,请参考以下文章