Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 使用smbclient从samba共享获取最新文件_Python_Python 3.x_Smb - Fatal编程技术网

Python 使用smbclient从samba共享获取最新文件

Python 使用smbclient从samba共享获取最新文件,python,python-3.x,smb,Python,Python 3.x,Smb,我的目录包含这个文件,它是不同的版本,我想从中选择最新的版本,可以按日期排序,也可以按文件名末尾的修订号排序,比如 Myfile2001.txt 其中2001是修订号 如何使用smb客户端从samba共享目录获取最新文件,我想到了使用mask取出所有名称并将其传输到输出,然后执行一些搜索算法以找到最大的数字(最新版本),然后使用smbclient get获取文件,但这似乎不是一个最佳的解决方案,而且太单调乏味了。我想知道还有没有别的办法 EDIT:我在python中找到了另一种方法(只是为了方便

我的目录包含这个文件,它是不同的版本,我想从中选择最新的版本,可以按日期排序,也可以按文件名末尾的修订号排序,比如

Myfile2001.txt

其中
2001
是修订号

如何使用smb客户端从samba共享目录获取最新文件,我想到了使用mask取出所有名称并将其传输到输出,然后执行一些搜索算法以找到最大的数字(最新版本),然后使用
smbclient get
获取文件,但这似乎不是一个最佳的解决方案,而且太单调乏味了。我想知道还有没有别的办法

EDIT:我在python中找到了另一种方法(只是为了方便起见),在文本文件或
STDOUT
中捕获
smbclient get ls
的输出,然后使用python查找最新文件名。现在我不知道如何将上述命令的输出重定向到文本文件或
STDOUT
以根据逻辑处理它


有什么办法吗?由于
smbclient
不允许iOredition,因此我仍然坚持使用更新的方法。我已经通过了
pysmb
,但不能依赖它,因为它是一个实验库,但是,任何使用
pysmb
的解决方案也可以暂时解决这个问题

我已经用bash脚本中的awk解决了这个问题。目标:下载最新的csv文件

${SmbCmd} "ls <mask>" 2>/dev/null\
  | awk '{ if ($1 ~ "csv$") print $1 }' | sort | tail -1)
${SmbCmd}“ls”2>/dev/null\
|awk{if($1~“csv$”)print$1}| sort | tail-1)
其中${SmbCmd}具有要发送到smb服务器的所有值,如smbclient的路径、身份验证方法、smb服务器名称、smb目录。。。。然后以“-command”的长格式结束

当然,我的csv文件名的创建日期为“name_yyyy-mm-dd.csv”

你可以试试那样的

${SmbCmd} "ls <mask>-*" | awk '{ if ($1 ~ "csv$") print $8$5$6";"$1 }'
${SmbCmd}“ls-*”|awk'{if($1~“csv$”)打印$8$5$6“$1}”

但是,月份不是数字的

我已经在bash脚本中使用awk解决了这个问题。目标:下载最新的csv文件

${SmbCmd} "ls <mask>" 2>/dev/null\
  | awk '{ if ($1 ~ "csv$") print $1 }' | sort | tail -1)
${SmbCmd}“ls”2>/dev/null\
|awk{if($1~“csv$”)print$1}| sort | tail-1)
其中${SmbCmd}具有要发送到smb服务器的所有值,如smbclient的路径、身份验证方法、smb服务器名称、smb目录。。。。然后以“-command”的长格式结束

当然,我的csv文件名的创建日期为“name_yyyy-mm-dd.csv”

你可以试试那样的

${SmbCmd} "ls <mask>-*" | awk '{ if ($1 ~ "csv$") print $8$5$6";"$1 }'
${SmbCmd}“ls-*”|awk'{if($1~“csv$”)打印$8$5$6“$1}”

但是,这个月不是数字

我很想知道投票结果。我有什么不对劲吗?我很想知道反对票的情况。我有什么毛病吗?