如何在数据库文件系统中移动相同扩展名的文件?

时间:2018-06-08 13:18:23

标签: databricks

当我尝试在DBFS中使用*移动文件时,我面临文件未找到异常。源和目标目录都在DBFS中。我在dbfs目录中有一个名为“test_sample.csv”的源文件,我在笔记本单元格中使用如下命令,

dbutils.fs.mv("dbfs:/usr/krishna/sample/test*.csv", "dbfs:/user/abc/Test/Test.csv")

错误:

java.io.FileNotFoundException: dbfs:/usr/krishna/sample/test*.csv

我感谢任何帮助。感谢。

3 个答案:

答案 0 :(得分:3)

dbutils目前不支持通配符。 您可以移动整个目录:

  <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>

或只是一个文件:

$("ul").on("click", "li", function(){
  $(this).toggleClass("completed");


}
);


$("ul").on("click", "span", function(event){

  $(this).parent().fadeOut(500, function(){
    $(this).remove();
  });

  event.stopPropagation();

}
)

$("input[type ='text']").on("keypress", function(event){
  if(event.which === 13) {
    var inputtext = $(this).val();
    $(this).val("");
    $("ul").append("<li><span><i class='fas fa-trash'></i></span> "+ inputtext + "</li>")
  }



})


$("#anan").click(function(){
	$("input[type='text']").fadeToggle();
});

如下面的评论所述,您可以使用python实现此通配符逻辑。另请参阅以下answer中的一些代码示例。

答案 1 :(得分:1)

由于不允许使用通配符,因此我们需要使通配符起作用(列出文件,然后移动或复制-稍作传统的方式)

import os

def db_list_files(file_path, file_prefix):
  file_list = [file.path for file in dbutils.fs.ls(file_path) if os.path.basename(file.path).startswith(file_prefix)]
  return file_list

files = db_list_files('dbfs:/your/src_dir', 'foobar')

for file in files:
  dbutils.fs.cp(file, os.path.join('dbfs:/your/tgt_dir', os.path.basename(file)))

答案 2 :(得分:0)

dbutils.fs.mv("file:/<source>", "dbfs:/<destination>", recurse=True)

使用上述命令将本地文件夹移动到dbfs。