我通过使用Python 2.7编写脚本来自动化我的任务。作为工作的一部分,我应该从SFTP服务器中的目录中获取适当的文件。表中以正则表达式模式格式提及了具有文件名的目录。文件和目录的目录深度,正则表达式模式因一个文件而异。
表中的正则表达式模式如下:
file_pattern
/dir1/dir2/dir3/(\d{10}/[^/]*/(test_\d{12}_full).txt.gz$
/dir1/dir2/dir3/test_[a-z]{4}_\d{12}_full).txt.gz$
我打算遍历file_pattern列值以获取文件模式,通过该模式检查是否有与正则表达式模式匹配的文件。
下面是我的Python脚本:
import MySQLdb
import paramiko
def connect_to_ftp():
cursor = db.cursor()
db = MySQLdb.connect(<ip_address>, <user_name>, <password>, <db_name>)
file_pattern = "select file_pattern from {0}".format(<table name>)
cursor.execute(file_pattern)
file_pattern_all = cursor.fetchall()
link_ip_addr = paramiko.Transport(<FTP_ip_address>, <port_number>)
link_ip_addr.connect(<user_name>, <password>)
sftp_conn = paramiko.SFTPClient.from_transport(transport)
ftp_list = sftp_conn.listdir()
print ftp_list
connect_to_ftp()
我能够连接到SFTP服务器,列出深度1中存在的目录。我需要一种解决方案,它可以帮助我深入匹配正则表达式的深度并列出SFTP服务器中的相应文件。
帖子的答案:Recursive directory download with Paramiko?适用于不具有正则表达式模式的文件路径。我需要使用正则表达式模式为文件路径和文件名提供类似的解决方案。
请帮助我提供相关解决方案。