Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/327.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 遍历文件夹和子文件夹以访问每个目录中的文件_Python_Download_Ftp_Iterator - Fatal编程技术网

Python 遍历文件夹和子文件夹以访问每个目录中的文件

Python 遍历文件夹和子文件夹以访问每个目录中的文件,python,download,ftp,iterator,Python,Download,Ftp,Iterator,下面我列出了我当前的代码,列出了整个文件夹,运行文件并下载它们。但是,此方法不支持遍历子文件夹和文件夹 def handleDownload(block): file.write(block) ddir='U:/Test Folder' filedestination = 'U:/SWEModelConstruction/UnmaskedData' t1= [] t2= [] t3= [] os.chdir(ddir) ftp = FTP('sidads.colorado.edu')

下面我列出了我当前的代码,列出了整个文件夹,运行文件并下载它们。但是,此方法不支持遍历子文件夹和文件夹

 def handleDownload(block):
    file.write(block)

ddir='U:/Test Folder'
filedestination = 'U:/SWEModelConstruction/UnmaskedData'
t1= []
t2= []
t3= []
os.chdir(ddir)
ftp = FTP('sidads.colorado.edu')
ftp.login()

print ('Logging in.')

directory = '/pub/DATASETS/NOAA/G02158/unmasked/'

print ('Changing to ' + directory)
ftp.cwd(directory)
ftp.retrlines('LIST')

print ('Accessing files')

filenames = ftp.nlst() # get filenames within the directory
print (filenames)

for filename in filenames:
    if filename not in ['.', '..']:
        #Parse values from filename to use in os.path.join
        for fname in filenames:
            t1 = fname[16:20]
            t2 = fname[20:22]
            t3 = fname[22:24]
            t4 = fname[16:24]

            if not t1: continue
        #use parsed values from filenamee to create folder and file pathss
        local_folder = os.path.join(filedestination, t1,t2,t3)
        local_filename = os.path.join(filedestination, t1,t2,t3,filename)
        local_dat = os.path.join(filedestination, t1,t2,t3,'zz_ssmv11034tS__T0001TTNATS'+t4+'05HP001.dat.gz')
        local_hdr = os.path.join(filedestination, t1,t2,t3,'zz_ssmv11034tS__T0001TTNATS'+t4+'05HP001.Hdr.gz')
        hdrfile = ('zz_ssmv11034tS__T0001TTNATS'+t4+'05HP001.Hdr')
        print (local_folder)
        print (local_filename)
        #check if folder for file exists and wether or not you have already it
        if os.path.exists(local_folder) and not os.path.isfile(local_filename):
            with open(local_filename, 'wb') as f_output:
                ftp.retrbinary('RETR '+ filename, f_output.write)
                ftp.quit()

我指示你去。在这里,您将看到一个使用PySTFP和walktree的示例。我不知道您使用的是什么FTP库,但如果您使用的是PySTFP,这个示例应该会有所帮助。关键是理解如何使用walktree。

做一个函数,每次你找到一个目录时递归调用它自己。不要只发布链接答案+那篇文章涉及SFTP,尽管标题不同,所以它是不相关的-OP使用ftplib FTP,而不是PYSTFP SFTP+不要回答重复的问题,投票关闭它们。@MartinPrikryl不要告诉我该怎么做!只是开玩笑,谢谢你的建议,但是,在未来你可能想考虑提供类似的东西……我不知道你是否知道这一点,但你不应该做以下…它会给人更深刻的启示。