본문 바로가기
파이썬

파이썬 Python에서 SFTP를 통해 연결 한 후 디렉터리의 모든 폴더 및 파일을 나열하는 방법

by º기록 2021. 2. 8.
반응형

저는 Python을 사용하고 있으며 SFTP에 연결을 시도하고 있으며 거기에서 XML 파일을 검색하고 로컬 시스템에 배치해야합니다. 다음은 코드입니다.

import paramiko

sftpURL   =  'sftp.somewebsite.com'
sftpUser  =  'user_name'
sftpPass  =  'password'

ssh = paramiko.SSHClient()
# automatically add keys without requiring human intervention
ssh.set_missing_host_key_policy( paramiko.AutoAddPolicy() )

ssh.connect(sftpURL, username=sftpUser, password=sftpPass)

ftp = ssh.open_sftp()
files = ftp.listdir()
print files

여기서 연결은 성공입니다. 이제 모든 폴더와 모든 파일을보고 싶고 거기에서 XML 파일을 검색하기 위해 필요한 폴더에 들어가야합니다.

마지막으로 내 의도는 SFTP 서버에 연결 한 후 모든 폴더와 파일을 보는 것입니다.

위의 코드에서 ftp.listdir () 을 사용하여 아래와 같은 출력을 얻었습니다.

['.bash_logout', '.bash_profile', '.bashrc', '.mozilla', 'testfile_248.xml']

이것들이 유일한 파일인지 알고 싶습니다.

위에서 사용한 명령도 폴더를 보는 데 맞습니까?

모든 폴더와 파일을 보는 명령은 무엇입니까?

 

해결 방법

 

한 가지 빠른 해결책은 ftp.listdir () 에있는 각 객체의 lstat 출력을 조사하는 것입니다.

다음은 모든 디렉토리를 나열하는 방법입니다.

>>> for i in ftp.listdir():
...     lstatout=str(ftp.lstat(i)).split()[0]
...     if 'd' in lstatout: print i, 'is a directory'
... 

파일은 반대 검색입니다.

>>> for i in ftp.listdir():
...     lstatout=str(ftp.lstat(i)).split()[0]
...     if 'd' not in lstatout: print i, 'is a file'
... 

 

참조 페이지 https://stackoverflow.com/questions/12295551

 

 

반응형

댓글