下面的代码正在连接到我的FTP服务器并查找文件;这些文件在文件名和附加文件名的开头都有时间戳,如“timestamp+name.txt”。这些时间戳通常有16个字符,如下所示:
我试图让这个“搜索器”忽略时间戳来搜索文件,所以它实际上应该查找“FTPtest.txt”。我正在努力使用for循环。我做了一些代码来测试:
files = ftp.nlst()
for x in files:
print(x[16:])
这确实列出了文件与削减名称,但我不知道如何利用它在我的代码。这下面的代码是完全工作,做它的工作,但现在我需要修改它。在输入用户只写短文件名('FTPtest.txt'),但不是全名,但它搜索精确的输入,忽略时间戳。这里的时间戳总是16个字符,但名称可以不同于FTPtest.txt。下面是我的代码:
from ftplib import FTP
from ftplib import FTP, error_perm
def repeat():
ftp = FTP(host="ip")
ftp.login(user='user', passwd='pass')
file_name = str(input('>>> What is name of your file? \n'))
try:
ftp.cwd('/test')
if file_name in ftp.nlst():
print("+++File found!+++")
else:
print("---File not found---")
except error_perm:
print("File does not exist")
ftp.quit()
while True:
repeat()
1条答案
按热度按时间von4xj4u1#
我的理解是,您只是想看看是否有一个完全匹配的文件排除前16个字符,所以这样做。
应该可以。注意,这不是最有效的,因为它在列表上迭代了两次,但是它很简洁。