通过python中的数据库正确调用和使用Linux find

通过python中的数据库正确调用和使用Linux find,python,linux,ftp,find,Python,Linux,Ftp,Find,我问了一个类似的问题,但忽略了数据库部分: 大多数答案的问题是子流程方法确实正确地实现了查找,但只能在我的计算机中进行搜索。我正在尝试在ftp数据库中搜索,并尝试了以下类型的操作: find_output = subprocess.check_output('find ~', shell = True) 进入 或 在其他尝试中,到目前为止没有任何效果。我试图在ftp数据库的目录和子目录中搜索特定的文件或目录,并打印出路径。是否有一种有用的方法不是子流程,或者是否有一种方法可以正确地调整子流

我问了一个类似的问题,但忽略了数据库部分:

大多数答案的问题是
子流程
方法确实正确地实现了查找,但只能在我的计算机中进行搜索。我正在尝试在ftp数据库中搜索,并尝试了以下类型的操作:

find_output = subprocess.check_output('find ~', shell = True) 
进入


在其他尝试中,到目前为止没有任何效果。我试图在ftp数据库的目录和子目录中搜索特定的文件或目录,并打印出路径。是否有一种有用的方法不是
子流程
,或者是否有一种方法可以正确地调整
子流程
以接受附加参数(sitename、filename)?

尝试使用命令元素列表

>>> subprocess.check_output(["find", ".", "-name", "*.py"])
b'./docs/conf.py\n./setup.py\n'

>>> help(subprocess.check_output)
Help on function check_output in module subprocess:

check_output(*popenargs, timeout=None, **kwargs)
    Run command with arguments and return its output.
...
重新阅读您的问题,您需要使用ftp客户端连接到ftp服务器并查看其中的文件

参见Python 3


我认为您有一些问题需要解决:

1) 正如您所指出的,在linux上查找运行它的机器的本地执行。 2) 您正在尝试访问远程FTP文件系统(我猜)

如果您的远程系统是linux,并且希望使用find检查其文件系统,则需要远程连接到该计算机。SSH可能是一个很好的例子。我刚刚修改了你原来问题的答案

found = subprocess.Popen(['ssh', 'user@host', 'YOUR FIND CMD'],stdout=subprocess.PIPE)
for line in iter(found.stdout.readline, ''):
   print line,

什么是“ftp数据库”?我使用ftp(文件传输协议)(ftplib)连接到数据库。虽然我没有管理员权限,但ftp不是数据库。这是一种在计算机之间传输文件的方法。对不起,我的意思是我可以使用python脚本访问数据库,并可以查看它,因此基本上我可以访问文件。对不起,我不太明白最后的参数是什么,以及这些参数的含义:(*popenargs,timeout=None,**kwargs)是什么。您能解释一下吗?
*popenargs
表示它需要一个arg列表
check_output
调用
subprocess.Popen
以便将Popen参数传递给它。请参见上面的帮助示例,该示例传递了参数列表。在重新阅读您的问题后,您可能希望使用Python的ftplib建立FTP连接并使用该连接查找您的文件。如果可能,请为正在搜索的文件添加一个参数,好吗?或者,如果不需要,您能解释一下原因吗?这取决于find的实现(我在这里提到了find CMD),例如,使用“find/-name“foo.txt”将在您的系统中搜索任何名为foo.txt的文件。使用ftp服务器,主机是ftp站点的url、ip地址还是其他什么?
>>> subprocess.check_output(["find", ".", "-name", "*.py"])
b'./docs/conf.py\n./setup.py\n'

>>> help(subprocess.check_output)
Help on function check_output in module subprocess:

check_output(*popenargs, timeout=None, **kwargs)
    Run command with arguments and return its output.
...
>>> from ftplib import FTP
>>> with FTP("ftp1.at.proftpd.org") as ftp:
...     ftp.login()
...     ftp.dir()
...
found = subprocess.Popen(['ssh', 'user@host', 'YOUR FIND CMD'],stdout=subprocess.PIPE)
for line in iter(found.stdout.readline, ''):
   print line,