当我尝试在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
我感谢任何帮助。感谢。
答案 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。